Python requestsとは?使い方を初心者向けに解説|HTTP通信・GET・POST・JSON取得

PythonでWebサイトにアクセスしたり、Web APIからデータを取得したりするときに便利なのがrequestsです。
requestsを使うと、PythonからHTTP通信を簡単に実行できます。
この記事では、Python初心者を対象に、requestsの基本から実際の使い方まで解説します。
Python requestsとは
requestsは、PythonからHTTP通信を行うためのライブラリです。
例えば、次のような処理に利用できます。
- Webページにアクセスする
- Web APIからデータを取得する
- JSON形式のデータを取得する
- Web APIにデータを送信する
- HTTPステータスコードを確認する
PythonにはHTTP通信を行うための標準ライブラリもありますが、requestsは比較的シンプルな記述でHTTP通信を実装できることが特徴です。
requestsをインストールする
requestsは外部ライブラリなので、利用する前にインストールします。
ターミナルで次のコマンドを実行します。
pip install requests
環境によっては、次のように実行します。
python -m pip install requests
インストールできたら、Pythonプログラムからimportします。
import requests
Python requestsの基本的な使い方
requestsでWebページにアクセスする基本形は次のとおりです。
import requests
response = requests.get("https://example.com")
print(response.status_code)
print(response.text)
requests.get()で指定したURLにGETリクエストを送信しています。
responseには、サーバーから返されたレスポンスが入ります。
requestsでGETリクエストを送る
Web APIなどからデータを取得するときによく利用するのがGETリクエストです。
import requests
response = requests.get("https://example.com")
print(response.status_code)
HTTP通信が正常に行われた場合、ステータスコードとして200が返ることがあります。
レスポンスの内容を取得する
response.textを使うと、レスポンスを文字列として取得できます。
import requests
response = requests.get("https://example.com")
print(response.text)
HTMLを返すWebページの場合は、HTMLの内容が表示されます。
requestsでJSONを取得する
requestsはWeb APIとの通信でもよく使われます。
APIからJSONが返される場合は、json()を使ってPythonのデータとして取得できます。
import requests
response = requests.get("https://example.com/api/data")
data = response.json()
print(data)
JSONの内容が辞書型として返されるAPIなら、次のようにデータを取り出せます。
import requests
response = requests.get("https://example.com/api/data")
data = response.json()
print(data["name"])
このように、requestsはPythonからWeb APIを利用するための基本的なライブラリとしても活用されています。
GETリクエストにパラメータを指定する
URLに検索条件などのパラメータを指定したい場合は、paramsを利用できます。
import requests
params = {
"keyword": "Python",
"page": 1
}
response = requests.get(
"https://example.com/search",
params=params
)
print(response.url)
辞書に指定した値をもとに、requestsがクエリパラメータを付けたURLを作成してくれます。
requestsでPOSTリクエストを送る
データをサーバーへ送信するときには、POSTリクエストを利用することがあります。
import requests
data = {
"name": "Taro",
"age": 20
}
response = requests.post(
"https://example.com/api/users",
data=data
)
print(response.status_code)
requests.post()を使うことでPOSTリクエストを送信できます。
JSONをPOSTする
Web APIによっては、JSON形式でデータを送信します。
その場合はjsonを指定できます。
import requests
data = {
"name": "Taro",
"age": 20
}
response = requests.post(
"https://example.com/api/users",
json=data
)
print(response.status_code)
dataとjsonでは送信方法が異なるため、利用するAPIの仕様を確認しましょう。
requestsでヘッダーを指定する
HTTPリクエストにヘッダーを追加したい場合は、headersを使用します。
import requests
headers = {
"User-Agent": "MyPythonApp/1.0"
}
response = requests.get(
"https://example.com",
headers=headers
)
print(response.status_code)
Web APIによっては、認証情報などをHTTPヘッダーに指定する必要があります。
APIキーを利用する場合
APIによってはAPIキーを利用してアクセスします。
例えば、ヘッダーにAPIキーを指定する仕様なら次のように記述できます。
import requests
headers = {
"Authorization": "Bearer API_KEY"
}
response = requests.get(
"https://example.com/api/data",
headers=headers
)
print(response.json())
実際のAPIでは、APIキーをプログラムに直接書かず、環境変数などを利用して管理する方法が一般的です。
requestsでタイムアウトを設定する
HTTP通信では、サーバーからの応答を待ち続ける可能性があります。
そのため、実際のプログラムではタイムアウトを設定することが重要です。
import requests
response = requests.get(
"https://example.com",
timeout=5
)
print(response.status_code)
この例では、タイムアウト時間を5秒に設定しています。
requestsのエラー処理
HTTP通信では、404や500などのエラーが発生することがあります。
requestsでは、raise_for_status()を使ってHTTPエラーを例外として扱えます。
import requests
response = requests.get(
"https://example.com",
timeout=5
)
response.raise_for_status()
print(response.text)
例えば404や500などのHTTPエラーが発生した場合、例外が発生します。
tryとexceptで処理する
実際のプログラムでは、例外処理と組み合わせることができます。
import requests
try:
response = requests.get(
"https://example.com",
timeout=5
)
response.raise_for_status()
print(response.text)
except requests.RequestException as e:
print("通信エラー:", e)
requests.RequestExceptionを使うと、requestsで発生する通信関連の例外をまとめて処理できます。
requestsのHTTPステータスコードを確認する
response.status_codeを使うと、HTTPステータスコードを確認できます。
import requests
response = requests.get("https://example.com")
print(response.status_code)
代表的なステータスコードには次のようなものがあります。
| ステータスコード | 意味 |
|---|---|
| 200 | 正常 |
| 201 | リソースが正常に作成された |
| 400 | リクエストが不正 |
| 401 | 認証が必要 |
| 403 | アクセスが拒否された |
| 404 | 指定したリソースが存在しない |
| 500 | サーバー側でエラーが発生 |
requestsでCookieを利用する
Cookieを指定してHTTP通信を行うこともできます。
import requests
cookies = {
"user_id": "12345"
}
response = requests.get(
"https://example.com",
cookies=cookies
)
print(response.status_code)
複数回のリクエストでCookieなどの情報を維持したい場合は、Sessionを利用できます。
requests.Sessionを使う
requestsにはSessionという仕組みがあります。
import requests
session = requests.Session()
response = session.get("https://example.com")
print(response.status_code)
同じ接続先に複数回アクセスするプログラムなどで利用されます。
requestsとBeautifulSoupを組み合わせる
requestsは、HTMLを取得する処理にも利用できます。
取得したHTMLを解析するときには、BeautifulSoupと組み合わせる方法があります。
import requests
from bs4 import BeautifulSoup
response = requests.get(
"https://example.com",
timeout=5
)
soup = BeautifulSoup(
response.text,
"html.parser"
)
print(soup.title.text)
requestsでWebページを取得し、BeautifulSoupでHTMLを解析するという役割分担です。
Webスクレイピングを学ぶ場合には、この組み合わせが基本的な技術の一つになります。
requestsで画像を取得する
requestsでは画像などのバイナリデータを取得することもできます。
import requests
response = requests.get(
"https://example.com/image.jpg",
timeout=5
)
with open("image.jpg", "wb") as f:
f.write(response.content)
response.contentを利用すると、レスポンスの内容をバイト列として取得できます。
requestsで覚えておきたいメソッド
requestsでは、HTTPメソッドに対応した関数を利用できます。
requests.get():GETリクエストrequests.post():POSTリクエストrequests.put():PUTリクエストrequests.patch():PATCHリクエストrequests.delete():DELETEリクエスト
特に初心者のうちは、まずget()とpost()を使えるようになると、Web APIを利用するプログラムを作りやすくなります。
Python requestsでよく使う属性・メソッド
| 記述 | 用途 |
|---|---|
response.status_code |
HTTPステータスコードを取得 |
response.text |
レスポンスを文字列として取得 |
response.content |
レスポンスをバイト列として取得 |
response.json() |
JSONをPythonのデータとして取得 |
response.headers |
レスポンスヘッダーを取得 |
response.url |
リクエストしたURLを確認 |
response.raise_for_status() |
HTTPエラーを例外として処理 |
Python requestsを使うメリット
HTTP通信を簡単に書ける
requestsを利用すると、PythonからWebサーバーへの通信を比較的少ないコードで記述できます。
Web APIとの連携に使いやすい
現在はさまざまなサービスがWeb APIを提供しています。
requestsを利用すれば、PythonからAPIを呼び出してデータを取得したり、サービスへデータを送信したりできます。
他のライブラリと組み合わせやすい
BeautifulSoupなどのライブラリと組み合わせることで、Webページから必要な情報を取得して加工するといった処理も作れます。
Python requestsを使うときの注意点
requestsは便利なライブラリですが、WebサイトやAPIへ大量のリクエストを送信する場合は注意が必要です。
対象サイトの利用規約やAPIの仕様を確認し、サーバーに過度な負荷をかけないようにしましょう。
また、APIキーやパスワードなどの機密情報をソースコードに直接記述して公開しないことも重要です。
Python requestsは何に使える?
requestsは、PythonでWebサービスと連携するさまざまなプログラムに利用できます。
- Web APIから情報を取得する
- 天気情報などを取得する
- 外部サービスと連携する
- Webページを取得する
- スクレイピングのデータ取得部分を担当する
- APIへデータを送信する
- Webサービスのテストを行う
まとめ:Python requestsを使ってHTTP通信を理解しよう
requestsは、PythonからHTTP通信を行うための代表的なライブラリです。
まずは次の基本を覚えるとよいでしょう。
requests.get()でGETリクエストを送るrequests.post()でPOSTリクエストを送るresponse.textで文字列を取得するresponse.json()でJSONを取得するresponse.status_codeでステータスコードを確認するtimeoutで通信の待ち時間を設定するraise_for_status()でHTTPエラーを確認する
Pythonを使ってWeb APIやWebサービスと連携したい場合、requestsはぜひ覚えておきたいライブラリです。
特に「PythonでAPIを使う → requestsでデータを取得する → JSONをPythonで処理する」という流れを実際にコードを書きながら練習すると、Pythonの実用的な使い方を理解しやすくなります。




