リクエスト後にライブラリを使用する方法requests
(Pythonで)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
bot = requests.session()
bot.get('http://google.com')
すべてのCookieをファイルに保持してから、ファイルからCookieを復元します。
リクエスト後にライブラリを使用する方法requests
(Pythonで)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
bot = requests.session()
bot.get('http://google.com')
すべてのCookieをファイルに保持してから、ファイルからCookieを復元します。
これをすぐに行う方法はありませんが、難しくはありません。
CookieJar
を使用してセッションからオブジェクトを取得しsession.cookies
、 を使用pickle
してそれをファイルに保存できます。
完全な例:
import requests, pickle
session = requests.session()
# Make some calls
with open('somefile', 'wb') as f:
pickle.dump(session.cookies, f)
ロードは次のとおりです。
session = requests.session() # or an existing session
with open('somefile', 'rb') as f:
session.cookies.update(pickle.load(f))
requests
ライブラリはrequests.cookies.RequestsCookieJar()
サブクラスを使用します。これは明示的にピッキングと dict のような API をサポートします。このRequestsCookieJar.update()
メソッドを使用して、pickle ファイルから読み込まれた Cookie で既存のセッション Cookie jar を更新できます。
@miracle2k の回答を拡張すると、 requestsSession
は任意のcookielibで動作するように文書化されています。(および) は、Cookie をファイルに保存したり、ファイルから読み込んだりできます。これは、リクエスト セッションの Cookie を保存およびロードする完全なコード スニペットです。パラメータは、テストのために httpbin を操作するために使用されますが、実際のコードには含めたくない場合があります。 CookieJar
LWPCookieJar
MozillaCookieJar
ignore_discard
import os
from cookielib import LWPCookieJar
import requests
s = requests.Session()
s.cookies = LWPCookieJar('cookiejar')
if not os.path.exists('cookiejar'):
# Create a new cookies file and set our Session's cookies
print('setting cookies')
s.cookies.save()
r = s.get('http://httpbin.org/cookies/set?k1=v1&k2=v2')
else:
# Load saved cookies from the file and use them in a request
print('loading saved cookies')
s.cookies.load(ignore_discard=True)
r = s.get('http://httpbin.org/cookies')
print(r.text)
# Save the session's cookies back to the file
s.cookies.save(ignore_discard=True)
Python 3 のコード
インターネット上の Cookie の大部分は Netscape Cookie であることに注意してください。そのため、Cookie を Mozilla cookies.txt ファイル形式 (Lynx および Netscape ブラウザーでも使用される) でディスクに保存する場合は、MozillaCookieJar を使用します。
from http.cookiejar import MozillaCookieJar
import requests
s = requests.Session()
s.cookies = MozillaCookieJar('cookies.txt')
# or s.cookies = MozillaCookieJar() and later use s.cookies.filename = 'cookies.txt' or pass the file name to save method.
response = s.get('https://www.msn.com')
s.cookies.save()
ファイルが既に存在する場合は上書きされるため、ファイルに含まれるすべての Cookie が消去されます。保存された Cookie は後で load() または revert() メソッドを使用して復元できます。
真の ignore_discard 引数を渡して別の方法で要求しない限り、save() メソッドはセッション Cookie を保存しないことに注意してください。
s.cookies.save(ignore_discard=True)
ロード方法を使用:
ファイルから Cookie を読み込みます。
新しく読み込まれた Cookie によって上書きされない限り、古い Cookie は保持されます。
s.cookies.load()
元に戻す方法を使用:
すべての Cookie を消去し、保存したファイルから Cookie を再読み込みします。
s.cookies.revert()
load または revert メソッドで真の ignore_discard 引数を渡す必要がある場合もあります。
MozillaCookieJar の使用に関する注意:
注 これにより、RFC 2965 Cookie に関する情報が失われ、ポートなどの新しいまたは非標準の Cookie 属性に関する情報も失われます。