【Python】Web APIから定期的にデータ収集する方法|JSON形式の取り扱い

【Python】Web APIから定期的にデータ収集する方法|JSON形式の取り扱い Python

為替レート、天気情報、ニュース、センサーデータなど、さまざまな情報がWeb APIを通じて提供されています。Pythonを使えば、これらのAPIから定期的にデータを取得し、保存・加工・通知などに自動で活用することが可能です。

この記事では、PythonでWeb APIに定期アクセスし、JSONデータを扱う基本的な方法を紹介します。

使用するライブラリ

基本的に標準ライブラリだけでも実装可能ですが、以下のようなライブラリが一般的です。

  • requests:APIへのHTTPリクエスト
  • json:JSON形式の解析(Python標準)
  • time:定期実行用のスリープ処理
pip install requests

APIへのアクセスとJSONの取得

ここでは、無料で使える為替API(例:https://api.exchangerate-api.com)を例にします。

import requests

url = "https://api.exchangerate-api.com/v4/latest/USD"
response = requests.get(url)

if response.status_code == 200:
    data = response.json()
    print("JPYのレート:", data["rates"]["JPY"])
else:
    print("APIエラー:", response.status_code)

ポイント: APIのレスポンスはJSON形式で返ってくるため、.json()メソッドで辞書型に変換できます。

定期的にAPIを呼び出す処理

一定間隔でデータを取得するには、whileループとtime.sleep()を使います。

import time

def fetch_data():
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()
        print("USD → EUR:", data["rates"]["EUR"])
    else:
        print("取得失敗")

# 10分ごとに実行
while True:
    fetch_data()
    time.sleep(600)  # 600秒 = 10分

JSONデータの保存と加工

取得したデータをCSVやJSONファイルとして保存しておけば、後で分析に活用できます。

import json
from datetime import datetime

def save_to_file(data):
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    filename = f"rates_{timestamp}.json"
    with open(filename, "w", encoding="utf-8") as f:
        json.dump(data, f, indent=2, ensure_ascii=False)

活用例

  • 天気APIから毎朝データを取得し、メール通知
  • 為替データを毎時取得してCSVに蓄積し、グラフ化
  • 製造ラインのIoTセンサーAPIを監視して異常を検出

まとめ

PythonとWeb APIを組み合わせれば、定期的なデータ収集とJSONデータの活用が簡単に実現できます。取得したデータを保存・分析・通知に活用すれば、業務の自動化やデータドリブンな判断にもつながります。

まずは公開APIから試し、慣れてきたら業務システムとの連携にも応用してみましょう。