簡単・便利!Python「requests」でWeb APIを使いこなす基礎

投稿者: | 2026-05-13

普段私たちがWebサイトを見たり、SNSを使ったりするとき、裏側ではHTTP通信が行われています。プログラミングでWebサービスと連携したり、Web上の情報を取得したりする際には、このHTTP通信を自在に操る必要がありますね。

requestsは、まるでWebとスマートにおしゃべりするような感覚で使えますよ。

概要

Pythonには標準ライブラリとしてHTTP通信を行うurllibモジュールがありますが、より直感的で使いやすいインターフェースを提供するのがrequestsライブラリです。requestsは、HTTPのGETやPOSTといった様々なメソッドを非常にシンプルに記述でき、Web開発者やデータサイエンティストにとって、もはや必須と言える存在となっています。

メリット

requestsライブラリを使うことには、多くのメリットがあります。

  • 直感的なAPI: requests.get()requests.post()のように、メソッド名がそのままHTTPメソッドに対応しているため、非常に読みやすく書きやすいコードになります。
  • 豊富な機能: セッション管理、リダイレクトの自動処理、タイムアウト設定、認証機能、ファイルアップロードなど、Web通信に必要な多くの機能を簡単に利用できます。
  • データ形式の自動処理: 特にJSON形式のデータを扱う際に真価を発揮します。response.json()と記述するだけで、取得したJSONデータをPythonの辞書やリストとして直接扱えるため、非常に便利です。
  • SSL検証のデフォルト有効化: セキュリティ面も考慮されており、デフォルトでSSL証明書の検証が行われます。
  • 高い人気と安定性: 多くのWebサービス開発やスクレイピング、API連携プロジェクトで利用されており、信頼性が非常に高いです。

サンプルコード

それでは、実際にrequestsを使ってHTTP通信を行ってみましょう。

1. GETリクエストでWebページを取得する

import requests

try:
    # GoogleのトップページにGETリクエストを送信
    response = requests.get('https://www.google.com')

    # ステータスコードが200(成功)か確認
    if response.status_code == 200:
        print("リクエスト成功!")
        # レスポンスのHTMLコンテンツを表示(一部抜粋)
        print(response.text[:500]) # 先頭500文字のみ表示
    else:
        print(f"リクエスト失敗: ステータスコード {response.status_code}")

except requests.exceptions.RequestException as e:
    print(f"リクエスト中にエラーが発生しました: {e}")

2. GETリクエストでWeb APIからJSONデータを取得する

ここでは、ダミーのAPIからJSONデータを取得してみます。

APIからデータを取得する際は、JSON形式で返ってくることが多いので、response.json()がとても便利なんです!

import requests

try:
    # ユーザー情報を取得するダミーAPIにGETリクエストを送信
    api_url = 'https://jsonplaceholder.typicode.com/users/1'
    response = requests.get(api_url)

    if response.status_code == 200:
        # JSONデータをPythonの辞書に変換
        user_data = response.json()
        print("APIからのデータ取得成功!")
        print(f"ユーザー名: {user_data['name']}")
        print(f"メールアドレス: {user_data['email']}")
    else:
        print(f"APIからのデータ取得失敗: ステータスコード {response.status_code}")

except requests.exceptions.RequestException as e:
    print(f"リクエスト中にエラーが発生しました: {e}")

3. POSTリクエストでデータを送信する

ダミーのAPIにPOSTリクエストで新しい投稿データを送信してみましょう。

import requests

try:
    # 新しい投稿を作成するダミーAPIにPOSTリクエストを送信
    post_url = 'https://jsonplaceholder.typicode.com/posts'
    # 送信するデータ
    payload = {
        'title': '私の初めての投稿',
        'body': 'requestsライブラリを使って、POSTリクエストを送信しました!',
        'userId': 1
    }

    # JSON形式でデータを送信
    response = requests.post(post_url, json=payload)

    if response.status_code == 201: # 201は作成成功
        print("POSTリクエスト成功!")
        # サーバーからのレスポンスを表示
        print(response.json())
    else:
        print(f"POSTリクエスト失敗: ステータスコード {response.status_code}")

except requests.exceptions.RequestException as e:
    print(f"リクエスト中にエラーが発生しました: {e}")

みーちゃんのワンポイント

requestsを使う上で最も重要なのは、通信が成功したかどうかの確認(ステータスコード)と、例外処理をきちんと行うことです。response.status_codeで結果をチェックし、try-exceptrequests.exceptions.RequestExceptionを捕捉することで、予期せぬネットワークエラーなどにも柔軟に対応できますよ。