Requests 徹底解説: PythonでHTTPリクエストを劇的に簡単に!
PythonでWebサイトから情報を取得したり、APIと連携したりする際に、あなたはどんなライブラリを使っていますか?もしurllibやurllib3で苦労しているなら、Requestsがあなたの開発体験を劇的に変えるでしょう。
この記事では、Pythonで最も人気があり、使いやすいHTTPライブラリであるRequestsの基本的な使い方から、知っておくと便利な応用テクニックまで、徹底的に解説します。
Requestsってどんなもの?
Requestsは、「人間のためのHTTPライブラリ」を謳っている、PythonでHTTPリクエストを行うための非常に高機能かつ直感的なライブラリです。複雑な設定を必要とせず、誰でも簡単にHTTPリクエストを送信し、レスポンスを処理できるように設計されています。内部的にはurllib3を基盤としていますが、よりPythonらしいシンプルなAPIを提供することで、開発者の負担を大幅に軽減します。
なぜRequestsを選ぶべきか?
RequestsがPython開発者にこれほどまでに支持されているのには、明確な理由があります。
驚くほどシンプルで直感的: コードが非常に読みやすく、短い記述で多くのことができます。複雑なHTTP通信も、まるで関数を呼び出すかのように扱えます。
豊富な機能: GET/POSTはもちろん、ファイルアップロード、セッション管理、認証、リダイレクト、タイムアウト、プロキシなど、Web通信に必要なあらゆる機能を標準でサポートしています。
自動的な処理: 文字コードの自動判別、JSONデータの自動パースなど、面倒な処理をRequestsが裏側で自動的に行ってくれます。
堅牢性と信頼性: 内部で
urllib3を使用しているため、パフォーマンスやSSL/TLS検証などの面でも信頼性があります。活発なコミュニティと豊富なドキュメント: 問題が発生した際に助けを求める場所が多く、学習リソースも豊富です。
Requestsを始めるための準備
1. インストール
Requestsはpipで簡単にインストールできます。Pythonに標準で搭載されているライブラリではないので、このステップだけは必要です。
pip install requests
Requestsの基本的な使い方
RequestsでHTTPリクエストを行う際の基本的な流れは非常にシンプルです。
リクエストの送信:
requestsモジュールのメソッド(get(),post(),put(),delete()など)を使ってリクエストを送信します。レスポンスの取得と処理: サーバーからのレスポンスオブジェクトを受け取り、ステータスコード、本文、ヘッダーなどを簡単に取得・処理します。
最小限のサンプルプログラム
import requests
try:
# 1. GETリクエストの送信
response = requests.get("https://httpbin.org/get")
print(f"GET リクエスト ステータスコード: {response.status_code}")
print(f"GET レスポンス本文 (JSON):\n{response.json()}") # JSONレスポンスは自動でパース
# 2. POSTリクエストの送信 (フォームデータ)
data_to_post = {"name": "Taro", "age": 25}
response_post = requests.post("https://httpbin.org/post", data=data_to_post)
print(f"\nPOST リクエスト ステータスコード: {response_post.status_code}")
print(f"POST レスポンス本文 (JSON):\n{response_post.json()}")
except requests.exceptions.RequestException as e:
print(f"リクエストエラーが発生しました: {e}")
このわずかなコードで、GETリクエストとPOSTリクエストを送信し、それぞれJSONレスポンスを自動的にパースして表示しています。シンプルさに驚きませんか?
Requestsの便利な機能
1. パラメータの追加 (GETリクエスト)
クエリパラメータ(URLの?以降の部分)は、params引数に辞書形式で渡すだけです。
import requests
params = {"key1": "value1", "key2": "value2"}
response = requests.get("https://httpbin.org/get", params=params)
print(f"URL: {response.url}") # パラメータが追加されたURLを確認
2. JSONデータの送信 (POST/PUTリクエスト)
APIにJSONデータを送信する場合、json引数にPythonの辞書を渡すだけで、Requestsが自動的にJSON形式に変換し、Content-Type: application/jsonヘッダーを設定してくれます。
import requests
json_payload = {"user_id": 123, "message": "Hello API!"}
response = requests.post("https://httpbin.org/post", json=json_payload)
print(response.json())
3. ヘッダーのカスタマイズ
カスタムヘッダーを追加したい場合も、headers引数に辞書を渡すだけです。
import requests
headers = {"User-Agent": "MyCustomApp/1.0", "Accept": "application/json"}
response = requests.get("https://httpbin.org/headers", headers=headers)
print(response.json()['headers'])
4. タイムアウト設定
ネットワークの遅延などでプログラムが固まるのを防ぐため、timeout引数でタイムアウトを設定できます。
import requests
try:
# 接続に1秒、データの読み込みに5秒まで待機
response = requests.get("https://httpbin.org/delay/3", timeout=(1, 5))
print(f"ステータスコード: {response.status_code}")
except requests.exceptions.Timeout:
print("リクエストがタイムアウトしました。")
except requests.exceptions.RequestException as e:
print(f"その他のエラー: {e}")
5. セッションの利用
ログイン情報やクッキーを複数のリクエスト間で保持したい場合は、Sessionオブジェクトを使用します。これにより、自動的にクッキーが管理され、認証情報などを繰り返し送信する必要がなくなります。
import requests
with requests.Session() as session:
# ログインリクエスト (例: クッキーが設定されると仮定)
login_data = {"username": "testuser", "password": "testpassword"}
session.post("https://httpbin.org/post", data=login_data)
# ログイン後のページにアクセス (クッキーが自動的に送信される)
response_protected = session.get("https://httpbin.org/cookies")
print(f"セッション内のクッキー: {response_protected.json()}")
まとめ
この記事では、Pythonで最も人気があり、使いやすいHTTPライブラリであるRequestsについて、その特徴、インストール方法、基本的な使い方、そしてよく使う便利な機能までを徹底的に解説しました。
Requestsは、そのシンプルさと強力な機能セットにより、PythonでのWeb通信を非常に快適にしてくれます。Webスクレイピング、API連携、Webテストなど、あらゆる場面でその真価を発揮するでしょう。
ぜひRequestsをあなたのPython開発に取り入れて、HTTPリクエストの扱いに革命を起こしてください!
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座

