Python-カスタムHTTPリクエスト
ハイパーテキスト転送プロトコル(HTTP)は、クライアントとサーバー間の通信を可能にするために使用されるプロトコルです。これは、クライアントとサーバー間の要求/応答プロトコルとして機能します。要求元のデバイスはクライアントと呼ばれ、応答を送信するデバイスはサーバーと呼ばれます。
urllibは、httpリクエストを処理するためにPythonプログラムで使用される従来のPythonライブラリです。しかし今では、urllibが以前行っていた以上のことを行うurllib3があります。urllib3ライブラリをインポートして、Pythonがそれを使用してhttpリクエストを作成し、レスポンスを受信する方法を確認します。リクエスト方法を選択することで、リクエストの種類をカスタマイズできます。
Pip install urllib3
例
以下の例では、httpリクエストの接続の詳細を処理するPoolManager()オブジェクトを使用します。次に、request()オブジェクトを使用して、POSTメソッドでhttpリクエストを作成します。最後に、jsonライブラリを使用して、受信した値をjson形式で出力します。
import urllib3
import json
http = urllib3.PoolManager()
r = http.request(
'POST',
'http://httpbin.org/post',
fields={'field': 'value'})
print json.loads(r.data.decode('utf-8'))['form']
上記のプログラムを実行すると、次の出力が得られます-
{field': value'}
クエリを使用したURL
クエリパラメータを渡してカスタムURLを作成することもできます。以下の例では、requestメソッドはクエリ文字列の値を使用してURLを完成させます。これは、Pythonプログラムの別の関数でさらに使用できます。
import requests
query = {'q': 'river', 'order': 'popular', 'min_width': '800', 'min_height': '600'}
req = requests.get('https://pixabay.com/en/photos/', params=query)
print(req.url)
上記のプログラムを実行すると、次の出力が得られます-
https://pixabay.com/en/photos/?q=river&min_width=800&min_height=600&order=popular