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
参照情報は以下の通りです。
Author And Source
この問題について(Python で OpenWeather API へアクセスして気象情報を取得する), 我々は、より多くの情報をここで見つけました https://qiita.com/akif999/items/047d676a6ca4c0441877著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .