爬虫--如何使用requests模拟登陆知乎
知乎登陆验证码问题比较棘手,所以我们可以考虑通过cookie来模拟登陆。
思路:
1、通过浏览器手动登陆知乎,利用抓包工具(如Fiddler等)来获取登陆后的cookie信息,并将其处理成dict类型。
2、然后使用requests的会话(Session)对象来携带cookie信息发送请求,因为同一个session实例会在跨请求的时候保持某些参数,比如cookie
代码如下:
# coding:utf-8
import requests
cookies = {
"_zap":"xxxxxx",
"_xsrf":"xxxxxx",
"d_c0":"xxxxxx",
"__snaker__id":"xxxxxxx",
"_9755xjdesxxd_":"xxxxxxx",
"captcha_session_v2":"xxxxxx" ,
...
}
url = 'https://www.zhihu.com/'
headers = {
'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"
}
sess = Session() #创建一个会话对象实例
sess.cookies = requests.utils.cookiejar_from_dict(cookies) #需要将cookie转换成cookiejar对象
response = sess.get(url,headers) #不需要指定cookies了
print(response.text) #能够显示登录后的页面内容了
#后续可以继续使用sess来发送请求,来访问需要登录后才能访问的页面