我用python的requests模拟登陆我学校的一个网站,用登陆返回的cookie来访问其中一些需要登陆才能访问的网页,有些网页可以访问,但是有些网页返回的却是登陆页面,为什么回这样?我用wireshark抓包看了一下,出现302重定向的问题,就是我访问一些网页回重定向到登陆页面,但有些网页又不会,这是为什么呢?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的数据
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) #访问目标url
return result
url = raw_input ("请输入需要访问的url:")
#username = raw_input ("请输入用户名:")
#password = raw_input ("请输入密码:")
print ctcp_crawler ("手动马赛克", "手动马赛克", "3", url).content
这个其实就要看看你这句是否登陆成功了,确认一下登陆的结果:
如果根据这个找不到原因,那就排查一下s.get存在其他的原因,就知道了,其实用不着wireshark这么麻烦:
请求结果的其他属性或方法可以看看这个:http://docs.python-requests.o...