PythonでのGET、POSTリクエストの送信方法

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: 返信されたクッキー情報を確認

タグ: requests HTTP GETリクエスト POSTリクエスト JSON

9月24日 07:42 投稿