Python で OpenWeather API へアクセスして気象情報を取得する


Goals

  • OpenWeather API へ Python からアクセスできるようになる
  • 取得した JSON データを整形して出力できるようになる

Back ground

仕事で Python を書く機会がありそうなので、
Python の素振りがてら、API を叩くコードを書いてみようと思いました。

OpenWeather

OpenWeather は気象情報を閲覧するモバイルアプリなどを公開しているサービスです。
別途、 API も無料で (※) 公開されているため、そちらを今回は利用します。
https://openweathermap.org/

※ 確認はしていませんが、この手の API は商用利用等では有料となる可能性があるため、よく確認の上使用してください。

API の仕様

今回は現在の気象データを取得するため、以下の API を使用します。
Current weather data

API Key の取得

API へアクセスするために Key の取得が必要です。
OpwnWeather のサイトで、サインアップして取得してください。

API へアクセスして JSON のデータを dump するコード

以下のコードで API へアクセスして JSON のデータを dump することができます。
外部パッケージとして requests が必要なため、 $ pip install requests でインストールしてください。

import requests
import json


cityName = "Tokyo"
ApiKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" # 各自で取得した Key を設定する
api = "http://api.openweathermap.org/data/2.5/weather?units=metric&q={city}&APPID={key}"
url = api.format(city=cityName, key=ApiKey)

response = requests.get(url)
data = response.json()
jsonText = json.dumps(data, indent=4)

print(jsonText)

上記のスクリプトを実行すると、以下のようなデータが得られます。
体感温度など、詳細なデータが得られて便利そうですね。

{
    "coord": {
        "lon": 139.6917,
        "lat": 35.6895
    },
    "weather": [
        {
            "id": 803,
            "main": "Clouds",
            "description": "broken clouds",
            "icon": "04n"
        }
    ],
    "base": "stations",
    "main": {
        "temp": 24.57,
        "feels_like": 25.48,
        "temp_min": 23.22,
        "temp_max": 25.7,
        "pressure": 1006,
        "humidity": 92
    },
    "visibility": 10000,
    "wind": {
        "speed": 3.6,
        "deg": 180
    },
    "clouds": {
        "all": 75
    },
    "dt": 1631960824,
    "sys": {
        "type": 2,
        "id": 2038398,
        "country": "JP",
        "sunrise": 1631910354,
        "sunset": 1631954715
    },
    "timezone": 32400,
    "id": 1850144,
    "name": "Tokyo",
    "cod": 200
}

Round up

今回の記事のまとめは以下です。

  • Open Weather API で、詳細な気象データが無料で取得できる
  • Python からは、 requests package で簡単に API へアクセスしてデータを取得できる

References

参照情報は以下の通りです。