
PythonでWebサービスやAPIにアクセスする際に最もよく使われるのが requests.get()
です。
この requests.get()
メソッドは、指定したURLからデータを「取得する」ための基本操作になります。
この記事では requests.get()
の基本的な使い方から、指定できるオプション、requests.post()
との違いまで、わかりやすく丁寧に解説します。
requests.get() とは?
requests.get()
は、HTTPのGETリクエストを送るためのメソッドです。
Webページを開いたり、APIからデータを取得したりするときに使われます。
サーバーに対して「この情報をください」とリクエストを送り、返ってきたデータを受け取るのが主な役割です。
Pythonでは requests.get(URL)
というシンプルな形で使えます。
使い方
基本的な使い方
1 2 3 4 5 6 |
import requests response = requests.get("https://httpbin.org/get") print(response.status_code) print(response.text) |
https://httpbin.org/get
にGETリクエストを送り- ステータスコード(成功なら200)と
- レスポンスの中身を表示しています
.text
を使うことで、取得したHTMLやJSONなどの生のデータを見ることができます。
具体例:クエリパラメータをつけてリクエスト
GETリクエストではURLの末尾に「?キー=値」の形でパラメータをつけることができます。
Pythonでは params=
引数を使うことで、自動的にURLに追加してくれます。
1 2 3 4 5 6 7 8 |
import requests payload = {"name": "Taro", "age": "25"} response = requests.get("https://httpbin.org/get", params=payload) print(response.url) print(response.json()) |
このコードでは:
name=Taro&age=25
というパラメータがURLに追加されresponse.url
で実際のアクセスURLを確認.json()
でレスポンスを辞書として扱うことができます
requests.get() で使える主なオプション
引数 | 説明 |
---|---|
params= |
クエリパラメータを辞書形式で指定 |
headers= |
リクエストに任意のHTTPヘッダーを追加 |
timeout= |
タイムアウト時間(秒)を指定 |
auth= |
ベーシック認証などのユーザー情報を指定 |
cookies= |
クッキー情報を追加して送信 |
例:カスタムヘッダー付きリクエスト
1 2 3 |
headers = {"User-Agent": "my-app"} response = requests.get("https://httpbin.org/headers", headers=headers) |
requests.get() と requests.post() の違い
requests.get()
と requests.post()
はどちらも 戻り値として Response
オブジェクトを返す 点は共通ですが、HTTPメソッドと送信方法・用途が異なります。
基本的な違い
項目 | requests.get() |
requests.post() |
---|---|---|
HTTPメソッド | GET | POST |
主な用途 | サーバーからデータを取得する | サーバーにデータを送信する |
データの送信方法 | URLのクエリパラメータとして送信 | リクエストボディに含めて送信 |
キャッシュの影響 | 受けやすい(URLが同じなら結果がキャッシュされる場合あり) | 基本的にキャッシュされない |
安全性の考え方(HTTP仕様上のSafe/Unsafe) | 安全(Safe):サーバーの状態を変更しないことが前提 | 非安全(Unsafe):データ追加や更新などサーバーの状態を変える処理で使う |
セキュリティ面での注意 | 機密情報をURLに含めるとブラウザ履歴やログに残るため危険 | 機密情報はボディで送信できるが、HTTPSを使わなければ盗聴リスクは残る |
一般的な用途例 | APIからデータ取得、Webページ取得 | フォーム送信、トークン取得、データ登録、ファイルアップロード |
実際の動作イメージ
GET(クエリパラメータ送信)
1 2 3 4 5 6 7 8 9 |
import requests params = {"user": "alice", "id": 123} response = requests.get("https://example.com/api", params=params) print(response.url) # https://example.com/api?user=alice&id=123 print(response.status_code) print(response.text) |
- URLに
?user=alice&id=123
のようにデータが付く - ブラウザでURLを直接開くのと同じ動作
POST(ボディ送信)
1 2 3 4 5 6 7 8 |
import requests data = {"user": "alice", "id": 123} response = requests.post("https://example.com/api", data=data) print(response.status_code) print(response.text) |
- データはHTTPボディに入れて送信
- URLは変わらない(
https://example.com/api
) - APIやフォーム送信などでよく使う
共通点
- どちらも
Response
オブジェクトを返す .status_code
、.text
、.json()
などでレスポンスデータを取得できるResponse.raise_for_status()
でHTTPエラーを検知可能
注意点
通信に失敗したときに備えて、Response.raise_for_status()
を使ってエラーを検知しましょう。
1 2 3 4 5 6 7 8 |
import requests try: response = requests.get("https://example.com/api") response.raise_for_status() except requests.exceptions.RequestException as e: print("エラーが発生しました:", e) |
この方法を使うことで、ステータスコードが 4xx や 5xx の場合に例外を発生させ、問題を早期に検知できます。
まとめ
requests.get()
はHTTPのGETリクエストを送る基本メソッドです。
- サーバーからデータを取得するのに使う
- クエリパラメータは
params=
で簡単に指定できる requests.post()
はデータ送信用、requests.get()
はデータ取得用という役割分担- どちらも
Response
オブジェクトを返し、同じようにレスポンスを扱える - エラー処理には
Response.raise_for_status()
を併用するのが基本
Web APIとのやりとりの第一歩として、まずは requests.get()
を使いこなせるようになると、さまざまなデータ取得がスムーズになります。