を使用してPOSTリクエストを行います、フォームのいずれかを記入せずに「検索」ボタンをクリックしてシミュレートするためにhttp://search.cpsa.ca/PhysicianSearchPythonの - 私は、次のページへのPOSTリクエストしようとしていますPythonの3 urllibは
をページにデータを追加します。 Chromeの開発者ツールのネットワークタブを見ながら、ボタンをクリックしてPOSTヘッダー情報を取得しました。他の同様の問題からソリューションをコピーするのではなく、私がこれを投稿している理由は、正しいヘッダー情報が得られていない可能性があるということです。正しくフォーマットされていて、適切な情報を取得しましたか?私は前にPOSTリクエストをしたことがありません。
これは私がつなぎ合わせるために管理してきたものである:
import urllib.parse
import urllib.request
data = urllib.parse.urlencode({'Host': 'search.cpsa.ca', 'Connection': 'keep-alive', 'Content-Length': 23796,
'Origin': 'http://search.cpsa.ca', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Cahce-Control': 'no-cache', 'X-Requested-With': 'XMLHttpRequest',
'X-MicrosoftAjax': 'Delta=true', 'Accept': '*/*',
'Referer': 'http://search.cpsa.ca/PhysicianSearch',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'en-GB,en-US;q=0.8,en;q=0.6',
'Cookie': 'ASP.NET_SessionId=kcwsgio3dchqjmyjtwue402c; _ga=GA1.2.412607756.1459536682; _gat=1'})
url = "http://www.musi-cal.com/cgi-bin/query?%s"
data = data.encode('ascii')
with urllib.request.urlopen("http://search.cpsa.ca/PhysicianSearch", data) as f:
print(f.read().decode('utf-8'))
このソリューションは、私はPOSTリクエストから取得したいデータのいずれかと、ページのHTMLを出力しますが、ありません。
POSTデータは、送信するフォームの入力要素の名前属性と値に対応する必要があります。フォームのhtmlを調べることで、名前属性を取り出すことができます。要求ヘッダーをPOSTデータとして使用しています。これは動作しません。また、リクエストpackage(http://docs.python-requests.org/ja/master/)を使用することを検討してください。これはurllib2よりも面白いです。 – snakecharmerb
フォームを指定するにはどうすればよいですか?または、データを指定するキーと値のペアが必要ですか? –
クロムでは、先ほどと同じように、ネットワークタブのPOSTリクエストを見て、ヘッダタブの一番下に行くと、POSTリクエストであるか、クエリパラメータであるGETリクエストであるかの名前と値が表示されます – snakecharmerb