pythonでPOSTリクエストを解析したり投げたりする
@author poifull10
あるサイトのページをクロールしたい場合,もしそのページがpostリクエストに対応していて,かつその処理結果をURLでは区別できない場合にはpostリクエストを調べる必要がある.何が言いたいのかというと,例えば
1search.php というページがあって,これにブラウザでフォームを入力し送信すると 検索結果result.phpが帰ってくるとする.このURLに例えば result.php?p=1&...とか検索条件が入っていれば良いのだが,全て同じURLで,result.phpというファイルで帰ってくる場合もある.このとき,pythonでデータを全てクロールするにはどうしたものかと悩んでいた.
色々調べた結果,フォームの内容はPOSTリクエストという形式でサーバーに送信されるようなので,POSTリクエストの内容を調べてその結果をrequestsモジュールにある
requests.postメソッドで送信すれば欲しいデータがかえってくることがわかった.
以下はその手順.
1.ブラウザで検索結果のページを開き,F12を押す.
(chromeの場合は右クリック,「要素の検証」でもいい)
2.Networkタブのresult.phpをクリック.
3.右にあるタブHeadersをクリック.
4.From Dataのところにある各変数の値がブラウザで送ったフォームの変数とデータとなる.
これを見た上で,urlがresult.phpにフォームデータp:1と送られていれば,pythonでは以下の様に書くことで1p目のデータをクロールできたことになる.
import requests
# 送信したいデータ
formData = {'p'=1}
# 送信先
url = 'result.php'
# 返されるデータ
res = requests.post(url, formData)