Pythonリクエストモジュールセッションコード例

httpプロトコル自体はステートレスです。リクエスト間の状態を維持するために、セッションメカニズムとCookieメカニズムがあります。リクエストは、それらを操作するための対応するメソッドも提供します。

リクエスト内のセッションオブジェクトを使用すると、HTTPリクエスト全体で特定のパラメータを維持できます。つまり、同じセッションオブジェクトによって送信されるリクエストヘッダーには、指定されたパラメータが含まれます。もちろん、最も一般的なアプリケーションは、後続の一連の要求でCookieを保持できることです。

以下では、公式ドキュメントの例を通じて使用方法を学びます。

import requests
s = requests.Session()
# ステップ1:リクエストにCookieを設定するリクエストを送信する
# tips: http://httpbin.orgを使用してhttpリクエストとレスポンスをテストできます
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
# ステップ2:別のリクエストを送信して、現在のリクエストのCookieを表示します
r = s.get("http://httpbin.org/cookies")print(r.text)

運用結果

{" cookies":{"sessioncookie":"123456789"}}

結果から、2番目のリクエストには最初のリクエストで設定されたCookieが既に含まれていることがわかります。つまり、Cookieを保持する目的はセッションを通じて達成されます。この例では、requests.Session()オブジェクトが作成され、これを介してhttpリクエスト操作が実行されます。これは、基本的にrequests.request()と同様です。

セッションはリクエスト間の継続性を提供するため、クロスリクエストパラメータと非クロスリクエストパラメータには違いがあります。つまり、特定のパラメータを持つすべてのリクエストが必要な場合もあれば、一時的なパラメータを持つ単一のリクエストだけが必要な場合もあります。次の例で使用方法を学びます。

import requests

s = requests.Session()
s.headers.update({'x-test':'true'})
# both 'x-test' and 'x-test2' are sent
r1 = s.get('http://httpbin.org/headers', headers={'x-test2':'true'})print(r1.text)
# ' x-test' is sent
r2 = s.get('http://httpbin.org/headers')print(r2.text)

運用結果

# r1.text
{" headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate","Host":"httpbin.org","User-Agent":"python-requests/2.22.0","X-Amzn-Trace-Id":"Root=1-5e91656f-b99f14a4d6f47f9e55a90bb4","X-Test":"true","X-Test2":"true"}}
# r2.text
{" headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate","Host":"httpbin.org","User-Agent":"python-requests/2.22.0","X-Amzn-Trace-Id":"Root=1-5e91656f-e9741db4c2ca2fd6e0628396","X-Test":"true"}}

結果から、2つの結論を導き出すことができます。

セッションは、リクエストメソッドのデフォルトデータを提供できます。たとえば、最初のリクエストの{'x-test': 'true'}がデフォルトデータであり、この時点でのデフォルトデータはクロスリクエストパラメータです。
メソッドレベルのパラメータはリクエスト間で維持されません。たとえば、2番目のリクエストはheaders = {'x-test2': 'true'}を伝送せず、返される結果に{'x-test2': 'true'はありません。 }、最初のリクエスト後にパラメータが保持されていないことを示します。

参考資料

https://github.com/psf/requests/blob/master/requests/sessions.py

https://requests.readthedocs.io/en/master/user/advanced/#session-objects

以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。

Recommended Posts

Pythonリクエストモジュールセッションコード例
Python3モジュール
PythonATM関数の実装コード例
PythonはモジュールのCookieインスタンス分析を要求します
Python検証コード傍受識別コードの例
Pythonオブジェクト指向の例
Pythonレッスン37-モジュール
Python3組み込みモジュールの使用法
Python3.7デバッグサンプルメソッド
Python3外部モジュールの使用
PythonSMS爆撃コード
pythonのPrettytableモジュール
Python補間補間の例
Pythonでの同時リクエスト(パート2)
バグを見つけるためのPythonコード(2)
バグを見つけるためのPythonコード(7)
pythonコードにコメントする方法
バグを見つけるためのPythonコード(4)
バグを見つけるためのPythonコード(3)
バグを見つけるためのPythonコード(9)
Python描画ローズ実装コード
Pythonの負の弾性率の操作例
Pythonはコードブロックフォールディングを実装します
Python出力数学記号の例
バグを見つけるためのPythonコード(6)
Python反復可能オブジェクトの重複排除の例
バグを見つけるためのPythonコード(1)
バグを見つけるためのPythonコード(8)
Pythonは検証コード認識を実装します
バグを見つけるためのPythonコード(5)
Python一次元二次元補間の例
pythonコードは大文字と小文字を区別しますか
Pythonドローバーグラフ(バーグラフ)の例
Pythonの右揃えの例の方法
python描画モジュールのmatplotlib
PythonFakerデータ偽造モジュール