データ収集のための 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 stringresponse.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 secondsSessionで接続を再利用する
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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- データ収集のための REST API 基礎
- 大規模データセットのページングと収集
- 収集データを効率的に保存する
- 公開データ API の操作