将selenium获得的cookies传递给requests.session().cookies

写爬虫的过程中进行模拟登录的时候,有的网站会有滑块验证,不是很好处理,想到了使用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")

你可能感兴趣的:(将selenium获得的cookies传递给requests.session().cookies)