写爬虫的过程中进行模拟登录的时候,有的网站会有滑块验证,不是很好处理,想到了使用selenium配合requests进行半自动登录,将selenium获取到的cookies共享给requests,然后使用requests进行后续的操作。
这里需要注意的就是,从selenium中获取的cookies是由字典组成的列表,
cookies = [
{"name": "user", "value": "username"},
{"name": "pwd", "value": "password"},
{"name": "date", "value": "2019-06-18"},
# ...
]
但是通过阅读源码,发现session中的cookies是RequestsCookieJar()
类,然后该类提供了set()
方法进行插入。
RequestsCookieJar().set(name, value)
下面看一个简单的例子:
import requests
from selenium import webdriver
brower = webdriver.Chrome()
# 打开网站
brower.get("https://zz/zzs7.top")
# 获取cookies
selenium_cookies = brower.get_cookies()
sess = requests.session()
tmp_cookies = requests.cookies.RequestCookieJar()
for item in selenium_cookies:
tmp_cookies.set(item["name"], item["value"])
sess.cookies.update(tmp_cookies)
# 这时候使用的就是同一个cookies了。
sess.get("https://zz/zzs7.top")