在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ python requests模擬登陸出現(xiàn)重定向的問題?

python requests模擬登陸出現(xiàn)重定向的問題?

我用python的requests模擬登陸我學(xué)校的一個網(wǎng)站,用登陸返回的cookie來訪問其中一些需要登陸才能訪問的網(wǎng)頁,有些網(wǎng)頁可以訪問,但是有些網(wǎng)頁返回的卻是登陸頁面,為什么回這樣?我用wireshark抓包看了一下,出現(xiàn)302重定向的問題,就是我訪問一些網(wǎng)頁回重定向到登陸頁面,但有些網(wǎng)頁又不會,這是為什么呢?python爬蟲新手,希望各位大佬多多指教
代碼如下:

#coding:utf-8
import urllib
import requests

login_url = "http://ctcp.scnu.edu.cn/scnu/login"    #登陸頁面

def ctcp_crawler (username, password, roleId, url) :
    #需要post的數(shù)據(jù)
    data = urllib.urlencode ({
        "username" : "username",
        "password" : "password",
        "roleId" : "3"
    })
    headers = {'User-agent' : 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0'}   #頭

    s = requests.Session ()     #建立一個會話
    response = s.post (login_url, data = data, headers = headers)   #post登陸信息獲取cookies
    result = s.get (url, cookies = response.cookies)    #訪問目標(biāo)url
    return result

url = raw_input ("請輸入需要訪問的url:")
#username = raw_input ("請輸入用戶名:")
#password = raw_input ("請輸入密碼:")

print ctcp_crawler ("手動馬賽克", "手動馬賽克", "3", url).content
回答
編輯回答
墨小羽

這個其實就要看看你這句是否登陸成功了,確認(rèn)一下登陸的結(jié)果:

response = s.post (login_url, data = data, headers = headers)
print response.content
print response.cookies

如果根據(jù)這個找不到原因,那就排查一下s.get存在其他的原因,就知道了,其實用不著wireshark這么麻煩:

result = s.get (url, cookies = response.cookies)
print result.url # 知道實際上被重定向后的鏈接是什么
print result.content # 返回來什么內(nèi)容
print result.status_code # 狀態(tài)碼

請求結(jié)果的其他屬性或方法可以看看這個:http://docs.python-requests.o...

2017年3月25日 04:16