seleniumで取得したcookieをrequestsに引き渡す方法

Python

WebDriverから取得出来るcookieはcookiejar型

WebDriverからcookieの一覧を取得することはget_cookies()を使用すれば容易に出来るものの、それをrequestsにセットするには一手間が必要でした。

というのも、get_cookiesで取ってくれるデータはcookiejarという型のデータで、そのままではセットする際にエラーが起きてしまいました。

そこで、requestsにはcookiejarからdictに変換出来る関数(cookiejar_from_dict)が用意されているので、それを使ってrequests用のcookieにしてから入れるという方法を学びました。

やり方としては以下のような感じです。

import requests
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://')

session = requests.Session()
for cookie in driver.get_cookies():  // ここではcookiejarの値が取れてきてる
    for item in cookie:
        if type(cookie[item]) != str:
            cookie[item] = str(cookie[item])
        session.cookies.update(requests.cookies.cookiejar_from_dict(cookie))  // cookiejar_from_dictを使用してcookieをdict型に変換してからセット

session.get('http://', timeout=10)

以上で、cookieをセット出来るようになりました。

最後に

大分ニッチな用途ですが、seleniumでアクセスしつつ、そのcookieを使用してrequestsでAPIにアクセスするなどで活用出来るかと思います。

コメントを残す