概要
動的サイトは通常、ブラウザからwebサーバにリクエストを送信し、新しいコンテンツを取得することでページの内容を更新する。
この通信をPython上で再現したい状況がよくあると思うので方法を記載する。
今回はPOSTリクエストを対象とする。
動作環境
python --version
Python 3.7.13
ChromeでPOSTデータを確認する
まずは実際に通信を発生させて中身を確認する。
-
ブラウザにて再現対象の操作を行い通信を発生させる。
(ex. フォームへの入力・送信、スクロールなど)
curl
で通信を再現する
Pythonで再現する前にcurl
で再現する(方法を確認する)必要がある。
- DevTools上のリクエストの結果を右クリックして[Copy]→[Copy as cURL (bash)]を選択する。
- コピーしたコマンドをターミナル等で実行すれば同じリクエストを送信できる。
Pythonで通信を再現する
Pythonのrequests
ライブラリでPOSTリクエストを送信できる。
上述したcurl
コマンド内容をrequests
ライブラリで使えるように書き換えることでPython上でも同じ通信を再現できる。
requests
公式ドキュメントを見ながら手で書き換えてもよいが、
curl
から各言語用HTTP通信ライブラリ記法に変換してくれる非常に便利なサイトがあるのでそちらを利用する。
もちろんrequests
に変更可能。
bfotool
ここで変換したPythonコードをそのまま実行するだけで通信を再現できる。
参考
https://btj0.com/blog/web/chrome-post/
https://dev.classmethod.jp/articles/python-requests-low-level-api/
https://python.civic-apps.com/http-request-post-get/
https://hibiki-press.tech/python/requests_module/1882