はじめに|APIを活用したデータ取得で業務効率アップ
外部APIを使ってデータを取得・活用することは、現代のプログラマーにとって欠かせないスキルのひとつです。例えば天気予報、為替情報、SNSデータなど、ほとんどのサービスがREST APIを通じて外部提供されています。
本記事では、中級者向けに「Python × requests × json」モジュールを使って、APIからデータを取得・加工・保存する一連の流れを実践形式で解説します。
使用ライブラリと事前準備
PythonにはAPI通信に便利な標準・外部ライブラリが豊富にあります。今回は以下の2つを使います。
必要ライブラリ
pip install requests
requests
:HTTPリクエストを簡単に送信できるライブラリjson
:JSON形式のデータを扱う標準ライブラリ(インストール不要)
Step 1|APIの仕様を理解する
まずは、使用するAPIのエンドポイントやパラメータ、レスポンス形式を理解する必要があります。今回は例として「JSONPlaceholder」というサンプルAPIを使用します。
例:記事一覧を取得するAPI
GET https://jsonplaceholder.typicode.com/posts
このエンドポイントにアクセスすると、記事データ(ID, title, bodyなど)の一覧がJSON形式で取得できます。
Step 2|requestsでAPIにアクセスする
まずは基本のGETリクエストを送って、JSONデータを取得してみましょう。
import requests
url = "https://jsonplaceholder.typicode.com/posts"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
print(f"{len(data)} 件のデータを取得しました。")
else:
print(f"エラー:{response.status_code}")
Step 3|取得したJSONを整形・加工する
取得したJSONデータはPythonの辞書やリストとして扱えます。例えば、記事のタイトルだけを抜き出すには以下のようにします。
for post in data[:5]: # 先頭5件だけ表示
print(f"ID: {post['id']} | Title: {post['title']}")
Step 4|ローカルファイル(JSON or CSV)に保存する
JSONとして保存
import json
with open("posts.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4)
CSVとして保存(pandas使用)
import pandas as pd
df = pd.DataFrame(data)
df.to_csv("posts.csv", index=False, encoding="utf-8-sig")
Step 5|パラメータ付きAPIの呼び出し例
以下のように、特定の投稿(例:IDが1)のみ取得することも可能です。
params = {"id": 1}
response = requests.get(url, params=params)
if response.ok:
print(response.json())
※実際の業務では、APIキーやトークンが必要なケースもあります。その場合はheaders
を使って指定します。
よくあるエラーと対処法
エラー内容 | 原因・対処法 |
---|---|
status_code != 200 | APIのURLやパラメータミス。認証エラーなども疑う |
json.decoder.JSONDecodeError | レスポンスがJSON形式でない可能性あり。response.text で確認 |
ConnectionError | ネットワーク障害またはAPIサーバーがダウンしている |
応用例|定期取得してデータベースに保存する(概要)
schedule
モジュールを使えば定時取得も可能sqlite3
でローカルDBに保存すれば分析も容易に
import schedule
import time
def fetch_and_save():
# 上記処理を関数にまとめて定期実行
pass
schedule.every().day.at("09:00").do(fetch_and_save)
while True:
schedule.run_pending()
time.sleep(60)
まとめ|API×Pythonで“データを使いこなす人”へ
APIとPythonの組み合わせは、業務効率化・データ分析・システム連携など、あらゆる分野で強力な武器になります。requests
とjson
の基本をマスターすれば、あとはAPI仕様を読み解くだけ。ぜひ実案件でも応用してみてください!