Requestsライブラリの基本
- 環境準備: pip install requests
- RequestsはPythonでHTTPリクエストを送信するためのライブラリです。
- 主な用途: クローリングやAPI呼び出し時のHTTP通信を管理します。
- 公式ドキュメント: Requests日本語ドキュメント
HTTPリクエストとレスポンスの構成
HTTPリクエストには以下の4つの要素が含まれます:
- リクエスト行: メソッド、パス、HTTPバージョン
- リクエストヘッダ: メタデータ
- 空行: リクエストヘッダとボディを区別します
- リクエストボディ: データの送信
HTTPレスポンスには以下の4つの要素が含まれます:
- ステータス行: HTTPステータスコード
- レスポンスヘッダ: メタデータ
- 空行
- レスポンスボディ: 実際の返信データ
GETリクエストの送信方法
方法1: URLに直接パラメータを追加
import requests
url = "http://example.com/api?param1=abc¶m2=123"
response = requests.get(url)
print(response.text)
方法2: params引数を使用 (推奨)
import requests
url = "http://example.com/api"
params = {
"api_key": "abcdef123456",
"user_id": "7890"
}
response = requests.get(url, params=params)
print(response.text)
POSTリクエストの送信方法
フォームデータ送信
import requests
url = "http://example.com/api"
data = {
"name": "テストユーザー",
"email": "test@example.com"
}
response = requests.post(url, data=data)
print(response.text)
JSONデータ送信
import requests
import json
url = "http://example.com/api"
payload = {
"name": "テストユーザー",
"email": "test@example.com"
}
json_data = json.dumps(payload)
response = requests.post(url, data=json_data, headers={'Content-Type': 'application/json'})
print(response.json())
dataとjsonの違い
- data: URLエンコードされたフォームデータを送信します
- json: JSON形式のデータを送信します
カスタムヘッダの設定
- Accept: 受け入れ可能なデータタイプを指定
- Accept-Language: 言語設定を指定
- Accept-Encoding: エンコーディングタイプを指定
- Host: リクエスト先のホスト名を指定
- Cookie: クッキー情報を送信
- Referer: リクエスト元のURLを指定
- User-Agent: ユーザーエージェント情報を送信
- Content-Type: データのフォーマットを指定
レスポンスの内容確認
- status_code: HTTPステータスコードを確認
- content: バイナリ形式のレスポンスボディを確認
- headers: レスポンスヘッダを確認
- json(): JSON形式のレスポンスをPythonオブジェクトに変換
- url: 実際送信されたURLを確認
- text: 文字列形式のレスポンスボディを確認
- cookies: 返信されたクッキー情報を確認