0Pricing
Learn AI with Python · レッスン

データ収集のための REST API 基礎

HTTP GET/POST、ヘッダー、認証(API key、Bearer)、requests による JSON 解析を学びます。

「データ収集のための REST API 基礎」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。

AIにとってAPIが重要な理由

モデルの性能は、データの品質に左右されます。Web APIを使えば、単一の静的ファイルに頼るのではなく、天気、価格、ソーシャルメディアの投稿、公開データセットなど、新しい構造化データを必要なときに収集できます。

このコースでは、Pythonと広く使われているrequestsライブラリを使って、そのデータを取得・保存します。

REST APIとは

REST APIは、HTTP経由でリソースを公開します。URL(エンドポイント)にリクエストを送り、通常はJSON形式のデータを受け取ります。

主なHTTPメソッドは次のとおりです。

  • GET — データを読み取る
  • POST — データを作成する
  • PUT/PATCH — データを更新する
  • DELETE — データを削除する

データ収集では、主にGETを使います。

最初のGETリクエスト

requests.get(url)はGETリクエストを送信し、Responseオブジェクトを返します。レスポンスには、ステータス、ヘッダー、本文が含まれます。

import requests

resp = requests.get("https://api.example.com/users")
print(resp.status_code)   # 200
print(resp.text[:200])    # raw body as a string

response.status_codeを確認する

ステータスコードは、リクエストが成功したかどうかを示します。

  • 200 成功
  • 301/302 リダイレクト
  • 400 不正なリクエスト
  • 401/403 認証に関する問題
  • 404 見つからない
  • 429 レート制限に達した
  • 500 サーバーエラー
resp = requests.get(url)
if resp.status_code == 200:
    print("Success")
else:
    print("Failed:", resp.status_code)

response.json()でJSONを解析する

ほとんどのAPIはJSONを返します。response.json()を使うと、本文を自動的にPythonの辞書やリストに解析できます。

JSONを手作業で解析する必要はありません。.json()が処理してくれます。また、本文が有効なJSONでない場合は、分かりやすいエラーを発生させます。

resp = requests.get("https://api.example.com/users/1")
data = resp.json()
print(data["name"])
print(data["email"])

paramsでクエリパラメータを送信する

クエリパラメータを使って、リクエストを絞り込んだり設定したりできます。paramsに辞書を渡すと、requestsがエンコードを処理してURLを組み立ててくれます。

この例では、URLに?city=London&units=metricが追加されます。

params = {"city": "London", "units": "metric"}
resp = requests.get("https://api.example.com/weather", params=params)
print(resp.url)
print(resp.json())

ヘッダーを送信する

ヘッダーには、コンテンツタイプ、ユーザーエージェント、APIキーやトークンなどのメタデータが含まれます。辞書としてheadersに渡します。

多くのAPIでは、アクセスにAuthorizationヘッダーが必要です。

headers = {
    "Authorization": "Bearer YOUR_TOKEN",
    "User-Agent": "my-data-collector/1.0",
}
resp = requests.get("https://api.example.com/data", headers=headers)
print(resp.json())

堅牢なコードのための raise_for_status()

ステータスコードを手作業で確認する代わりに、resp.raise_for_status()を呼び出します。4xxまたは5xxのレスポンスに対してHTTPErrorを発生させるため、失敗を確実に検知できます。

try/exceptで囲むと、エラーを適切に処理できます。

import requests

try:
    resp = requests.get(url, timeout=10)
    resp.raise_for_status()
    data = resp.json()
except requests.HTTPError as e:
    print("HTTP error:", e)
except requests.RequestException as e:
    print("Network error:", e)

必ずタイムアウトを設定する

timeoutを設定しないと、応答しなくなったサーバーによってスクリプトが永遠に停止する可能性があります。必ず秒単位の値を指定してください。

何千ものエンドポイントにアクセスするデータ収集ループでは、タイムアウトの設定漏れが処理停止のよくある原因になります。

resp = requests.get(url, timeout=10)   # give up after 10 seconds

Sessionで接続を再利用する

requests.Sessionは、複数のリクエスト間で基盤となるTCP接続を再利用でき、ヘッダーも一度設定するだけで済みます。同じホストに何度もアクセスする場合、処理が大幅に高速になります。

import requests

session = requests.Session()
session.headers.update({"Authorization": "Bearer YOUR_TOKEN"})

for uid in [1, 2, 3]:
    resp = session.get(f"https://api.example.com/users/{uid}")
    print(resp.json()["name"])

session.close()

シンプルな取得ヘルパー

このパターンを再利用可能な関数にまとめます。セッションを設定し、タイムアウトを適用し、エラーを発生させ、解析済みのJSONを返します。

次のレッスンでは、ページネーションや保存処理のために、このヘルパーを拡張していきます。

def fetch_json(session, url, params=None):
    resp = session.get(url, params=params, timeout=10)
    resp.raise_for_status()
    return resp.json()

クイックチェック:堅牢なリクエスト

404または500のレスポンスが返ったときに、コードで自動的に例外を発生させたいとします。

まとめ:REST APIの基礎

これでHTTP経由でデータを収集できるようになりました。

  • requests.get(url, params=..., headers=...)でリクエストを送信する
  • response.status_codeとraise_for_status()で失敗を検出する
  • response.json()で本文を解析する
  • timeoutで処理の停止を防ぐ
  • requests.Sessionで接続とヘッダーを再利用する

次は、複数のページにまたがるデータセットを収集します。

よくある質問

「データ収集のための REST API 基礎」レッスンは無料ですか?

はい。「データ収集のための REST API 基礎」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。

「データ収集のための REST API 基礎」で何を学びますか?

HTTP GET/POST、ヘッダー、認証(API key、Bearer)、requests による JSON 解析を学びます。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn AI with Pythonを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「データ収集のための REST API 基礎」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn AI with Pythonレッスンでコードを書いて実行できますか?

はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. データ収集のための REST API 基礎
  2. 大規模データセットのページングと収集
  3. 収集データを効率的に保存する
  4. 公開データ API の操作
← Learn AI with Pythonに戻る