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