【Python】RequestsでGETリクエストを送信する方法:基本とパラメータ設定

Web上のデータを取得する際、最も頻繁に使用されるのが GET リクエストです。Pythonの requests ライブラリを使用すれば、単にURLへアクセスするだけでなく、検索条件などのパラメータを付与したリクエストも、辞書(dict)形式で直感的に記述できます。

ここでは、基本的なアクセス方法と、params 引数を使用して安全にパラメータを送信する方法を解説します。

目次

実行可能なサンプルコード

以下のコードは、ホテルの空室検索APIを叩くシナリオを想定しています。接続先には、送信したリクエスト内容をそのままJSONで返してくれるテスト用サービス httpbin.org を使用しているため、実際にパラメータがどのようにURLに付与されたかを確認できます。

import requests

def main():
    # ---------------------------------------------------------
    # 1. 基本的なGETリクエスト
    # ---------------------------------------------------------
    print("=== 1. Basic GET Request ===")
    
    # 対象のURL(ここではリクエスト内容をエコーバックするテスト用API)
    base_url = "https://httpbin.org/get"
    
    # リクエストの送信
    response = requests.get(base_url)
    
    # 結果の確認(ステータスコードとレスポンスの一部)
    if response.status_code == 200:
        print("Success!")
        # レスポンスボディ(文字列)を表示
        print(f"Response Body (Start): {response.text[:100]}...")
    else:
        print(f"Failed with status: {response.status_code}")

    # ---------------------------------------------------------
    # 2. パラメータ付きのGETリクエスト(推奨される方法)
    # ---------------------------------------------------------
    print("\n=== 2. GET Request with Parameters ===")
    
    # 検索条件:京都にある、2名1室、禁煙の部屋を探す想定
    # URLの末尾に「?location=kyoto&guests=2...」と手書きする必要はありません
    search_params = {
        "location": "Kyoto",
        "check_in": "2025-10-01",
        "guests": 2,
        "is_smoking": False,
        "keyword": "温泉 & 露天風呂"  # スペースや特殊文字も自動でエンコードされます
    }
    
    # params引数に辞書を渡すだけで、自動的にクエリパラメータが生成されます
    response_with_params = requests.get(base_url, params=search_params)
    
    # 実際に生成されたURLを確認
    print(f"Generated URL: {response_with_params.url}")
    
    # サーバー側が受け取った引数を確認(httpbinはargsフィールドにパラメータを返します)
    data = response_with_params.json()
    print("\nServer received params:")
    for key, value in data['args'].items():
        print(f"  {key}: {value}")

if __name__ == "__main__":
    main()

解説:params引数を使うメリット

URLの末尾に ?key=value&key2=value2 と文字列連結でパラメータを作成することも可能ですが、requests.get()params 引数を使用することには以下の大きなメリットがあります。

1. URLエンコードの自動化

上記のコード例にある 温泉 & 露天風呂 のような日本語や、& などの特殊記号を含んでいても、ライブラリが自動的に %E6%B8%A9%E6%B3%89... のように正しい形式(URLエンコード)に変換してくれます。

2. コードの可読性と保守性

巨大なURL文字列を作るよりも、Pythonの辞書としてパラメータを管理する方が、値の変更や条件分岐によるパラメータの追加・削除が容易になります。

3. 型の自動処理

整数(int)や浮動小数点数(float)なども、自動的に文字列に変換して送信してくれます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次