爬虫--如何使用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来发送请求,来访问需要登录后才能访问的页面

 

posted @ 2021-05-12 21:15  eliwang  阅读(240)  评论(0编辑  收藏  举报