tiger-sms ChatGPT 账号/ChatGPT 代注册 OpenAI API 代充值

Selenium 通过 Chrome 获取 cookie 并传递给 requests 教程

dajiaka OpenAI API key

老王今天发现一个爬虫脚本不工作了,看了下日志发现是 Selenium 获取的 cookie 在传给 requests 的时候报错了,本文记录下 Selenium 通过 Chrome 获取 cookie 并传递给 requests 的教程。

一、旧写法报错内容

通用代码:

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox')
driver = webdriver.Chrome(executable_path='/root/chromedriver', options=chrome_options)

这是之前老王的 cookie 传递方法,用的 cookiejar_from_dict 方法将由 Selenium 得到的 cookies 直接转成 requests.Session() 需要的格式:

session = requests.Session()
driver.get(url)
cookies = driver.get_cookies()
session.cookies = requests.utils.cookiejar_from_dict(cookies)
resp = session.get(url)

报错:TypeError: list indices must be integers or slices, not dict

二、修改后的传递方法

修改后的代码,借助 RequestsCookieJar 逐一手动添加 Cookie 的 name 和 value:

session = requests.Session()
driver.get(url)
cookies = driver.get_cookies()
jar = RequestsCookieJar()
for cookie in cookies:
    jar.set(cookie['name'], cookie['value'])
session.cookies = jar
resp = session.get(url)

修改后爬虫脚本就能正常运行了。

赞(2)
关注我们
未经允许不得转载:老王博客 » Selenium 通过 Chrome 获取 cookie 并传递给 requests 教程