LoginSignup
9
6

More than 5 years have passed since last update.

python seleneのCookie情報をrequestsに渡してアクセスする方法

Last updated at Posted at 2018-01-05

Seleneを使ってログインをした後、Selene/Seleniumでは処理しづらく、urllibやrequestsなどの別ライブラリを併用したくなるようなケースに遭遇する事があります。
その場合、SeleneのCookie情報を取得し、別ライブラリに渡すとことで解決するのですが、方法が特殊なのかあまり例が見当たらないので調べて見ました。
今回はSeleneを使ってログイン後、Cookieをrequestsにセットする方法を試しています。

import os
from selene.browsers import BrowserName
from selene.api import *
import requests

TARGET_URL = {ログイン対象のURL}
LOGIN_ID = os.getenv("LOGIN_ID")
PASSWORD = os.getenv("PASSWORD")

def main():
    try:
        # 利用ブラウザを設定
        config.browser_name = BrowserName.CHROME
        # 対象ページを開き、IDとPASSWORDをセットしてログイン(仮)
        browser.open_url(TARGET_URL)
        s('input[id="login_id"').set(LOGIN_ID)
        s('input[id="password"').set(PASSWORD)
        s('input[id="submit"').click()

        # Cookieを取得
        cookies = browser.driver().get_cookies()
        # 取得したCookieをrequestsに渡す形に変換
        d = []
        for cookie in cookies:
            d[cookie["name"] ] = cookie["value"]

        # user-agent設定(必要なら)
        headers = {
            'User-Agent': 'Mozilla/5.0 xxxx'
        }

        # Cookieを引数にrequestを呼び出し
        request_url = {クッキーが必要なURL}
        r = requests.get(request_url, headers=headers, cookies=d)
        print(r.text)
    except:
        raise


if __name__ == '__main__':
    main()

Seleneでログイン後、HTMLそのものを取得したい場合、HTMLをPDF等に変換したい場合など、用途は限定的だと思いますが、知っておくと便利。

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6