公開データ API の操作
OpenWeatherMap、Wikipedia、政府の公開 API を使った実践的なデータ収集例を扱います。
「公開データ API の操作」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
公開 API で実践する
データ収集を学ぶ最良の方法は、実際の API にリクエストを送ることです。このレッスンでは、使いやすい次の 3 つの API を使用します。
- JSONPlaceholder — 練習用の架空の REST API。キーは不要です
- OpenWeatherMap — 実際の天気データを提供する API。無料の API キーが必要です
- Wikipedia API — 記事のコンテンツと検索を提供します
練習用の JSONPlaceholder
JSONPlaceholderは、認証なしで架空の投稿、ユーザー、コメントを提供します。リクエストと解析のコードをテストするのに最適です。
import requests
resp = requests.get("https://jsonplaceholder.typicode.com/posts", timeout=10)
resp.raise_for_status()
posts = resp.json()
print(len(posts), "posts")
print(posts[0]["title"])レスポンスから DataFrame へのワークフロー
標準的なワークフローは、JSON を取得してから、分析のために DataFrame に直接読み込むことです。
import pandas as pd
posts = requests.get("https://jsonplaceholder.typicode.com/posts", timeout=10).json()
df = pd.DataFrame(posts)
print(df.head())
print(df["userId"].value_counts())OpenWeatherMap — キーの取得
OpenWeatherMapでは、appidパラメーターで渡す無料のAPI keyが必要です。キーをコードに記述せず、環境変数から読み込んでください。
import os
API_KEY = os.environ["OWM_API_KEY"] # set OWM_API_KEY in your shellOpenWeatherMap — クエリパラメーター
現在の天気を取得するエンドポイントでは、q(都市)、appid(キー)、units(metric/imperial)を指定します。
import requests, os
params = {
"q": "Istanbul",
"appid": os.environ["OWM_API_KEY"],
"units": "metric",
}
resp = requests.get("https://api.openweathermap.org/data/2.5/weather", params=params, timeout=10)
resp.raise_for_status()
data = resp.json()ネストされた JSON フィールドの抽出
実際の API レスポンスは、深くネストされていることがあります。キーを連結して目的のデータまでたどり、存在しない可能性があるフィールドにはデフォルト値を指定した.get()を使用してください。
temp = data["main"]["temp"]
humidity = data["main"]["humidity"]
desc = data["weather"][0]["description"]
print(f"{temp} C, {humidity}% humidity, {desc}")複数都市の天気を収集する
都市をループ処理し、必要なフィールドを辞書のリストに平坦化してから、DataFrame を作成してください。
cities = ["Istanbul", "London", "Tokyo"]
rows = []
for c in cities:
p = {"q": c, "appid": os.environ["OWM_API_KEY"], "units": "metric"}
d = requests.get("https://api.openweathermap.org/data/2.5/weather", params=p, timeout=10).json()
rows.append({"city": c, "temp": d["main"]["temp"], "desc": d["weather"][0]["description"]})
import pandas as pd
df = pd.DataFrame(rows)Wikipedia API
Wikipedia APIは、検索と記事のコンテンツを提供します。actionとformat=jsonに加えて、説明的なUser-Agentヘッダーを指定する必要があります。
params = {
"action": "query",
"list": "search",
"srsearch": "machine learning",
"format": "json",
}
headers = {"User-Agent": "data-collector/1.0 (you@example.com)"}
resp = requests.get("https://en.wikipedia.org/w/api.php", params=params, headers=headers, timeout=10)
results = resp.json()["query"]["search"]記事の抜粋を取得する
prop=extractsとexintro=Trueを使用すると、記事の導入段落を取得できます。テキストデータセットの作成に便利です。
params = {
"action": "query",
"prop": "extracts",
"exintro": True,
"explaintext": True,
"titles": "Artificial intelligence",
"format": "json",
}
resp = requests.get("https://en.wikipedia.org/w/api.php", params=params, timeout=10)
pages = resp.json()["query"]["pages"]
for pid, page in pages.items():
print(page["extract"][:300])API ドキュメントを読む
API ごとに仕様は異なります。コードを書く前に、ベース URL、必須パラメーター、認証方式、レスポンスの構造、レート制限についてドキュメントを確認してください。
まず 1 件のリクエストを対話的にテストし、resp.json()を調べてから、実際の構造に合わせてループを組み立ててください。
API を適切に利用する
公開 API は共有リソースです。次の点を守って利用してください。
- 識別情報を含む
User-Agentを送信する - 同じデータを再取得しないよう、結果をキャッシュする
- リクエストの間隔を空け、レート制限を守る
- 各 API の利用規約を読み、従う
クイックチェック: 練習用 API
API キーに登録しなくても、リクエストと解析のコードをテストしたいとします。
まとめ: 公開データ API
実際の API からデータを収集する練習をしました。
- 認証なしの練習にはJSONPlaceholder
q、appid、unitsパラメーターと、環境変数から取得したキーを使うOpenWeatherMap- 検索と記事の抜粋に使うWikipedia API
- 取得したデータを DataFrame にするワークフローと、ネストされた JSON をたどる方法
- User-Agent、キャッシュ、レート制限、利用規約を守る適切な利用習慣
これでデータ収集は完了です。次は、テキスト AI のための正規表現を扱います。
よくある質問
「公開データ API の操作」レッスンは無料ですか?
はい。「公開データ API の操作」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「公開データ API の操作」で何を学びますか?
OpenWeatherMap、Wikipedia、政府の公開 API を使った実践的なデータ収集例を扱います。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「公開データ API の操作」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。