PythonにはHTTP通信を行うための標準ライブラリであるurllibのほか、より使いやすいサードパーティ製ライブラリとしてrequestsが広く利用されています。requestsは「HTTP for Humans(人間のためのHTTP)」をコンセプトに開発されており、直感的で簡潔なインターフェースを提供します。
インストール方法
requestsはpipを使って簡単にインストールできます:
python -m pip install requests
主なHTTPメソッドの使い方
GETリクエスト
requests.get()はサーバーからデータを取得する際に使用します。以下のように呼び出せます:
import requests
url = "https://httpbin.org/get"
params = {"keyword": "Python", "lang": "ja"}
response = requests.get(url, params=params, timeout=10)
print(response.text)
POSTリクエスト
データをサーバーに送信する場合はrequests.post()を使います:
import requests
url = "https://httpbin.org/post"
payload = {"username": "testuser", "password": "secret123"}
response = requests.post(url, data=payload)
print(response.status_code)
レスポンスオブジェクトの主な属性
| 属性 | 説明 |
|---|---|
status_code | HTTPステータスコード(例: 200, 404) |
headers | レスポンスヘッダー情報 |
text | レスポンス本文を文字列として取得 |
content | レスポンス本文をバイト列として取得(画像やバイナリデータ用) |
encoding | 文字エンコーディングの指定・取得 |
cookies | サーバーから受け取ったCookie情報 |
url | 実際にアクセスされたURL(リダイレクト後のURLなど) |
使用例:
import requests
res = requests.get("https://example.com")
print("ステータス:", res.status_code)
print("エンコーディング:", res.encoding)
print("URL:", res.url)
print("ヘッダー:", res.headers)
実用例:画像のダウンロード
以下は、Web上の画像をダウンロードしてローカルに保存する例です:
import requests
img_url = "https://example.com/sample.jpg"
headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get(img_url, headers=headers)
if response.status_code == 200:
with open("downloaded_image.jpg", "wb") as f:
f.write(response.content)
このように、requestsライブラリを使うことで、HTTP通信を非常にシンプルかつ柔軟に行うことができます。