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)

datajsonでは送信方法が異なるため、利用する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の実用的な使い方を理解しやすくなります。

プログラミング学習に興味がある方は、まずは無料体験会へ

無料体験会・お申し込みはこちら