Pythonを使ってWeb APIで取得したJSONファイルの扱い方の説明➂

Pythonを使ってOpenWeatherMapから天気情報を調べる

今回は、現在から5日間(3時間ごと)の天気を調べてみましょう。

さて、今回もOpenWeatherMapを利用して、天気情報を取得してみましょう。

尚、まだAPIキー取得をしていない方はこちらを参考にしてみてください。

それではAPIキーを取得している方は進んでいきましょう。

ナビの「API」をクリックして、少しスクロールすると「5day/3 Hour Forecast」(黄色マーカーで示されているところ)が現れ「API doc」をクリックします。


このような画面に移動します。

では、まず都市名で指定して天気情報を取得してみましょう。
import requests
import json
from pprint import pprint

url = “http://api.openweathermap.org/data/2.5/forecast?q={city name}&appid={API key}&lang=ja&units=metric”
url = url.format(city=”Tokyo”,key=”あなたが取得したAPIキー”)

jsondata = requests.get(url).json()
pprint(jsondata)

解説

import requests インターネットにアクセスするためのrequestsをimportします。
import json JSONを扱えるようにする標準ライブラリのjsonをimportします。
from pprint import pprintきれいに整形して表示することができる標準ライブラリのpprintをimportします。
url = “http://api.openweathermap.org/data/2.5/forecast?q={city name}&appid={API key}&lang=ja&units=metric”海外サイトなので、日本語表示にするためlang=ja、気温の単位も摂氏にするためunits=metricを追記しました。http://を追記しAPI callを貼り付けます。変数urlとし代入します。
url = url.format(city=”Tokyo”,key=”取得したAPIキー”)format文を使い、置き換えます。
jsondata = requests.get(url).json()getした値に.json()と命令して取り出します。
pprint(jsondata)取得したデータを表示します。

きれいに整形して表示されました。また3時間ごとのデータも取得していることがわかります。これが5日間分、40個取得できています。(データが多いので割愛させてもらいます)

UTC(協定世界時)をJST(日本標準時)に変換する

dt_txtは「日時」を表し、dtはそれを数値で表した「タイムスタンプ」で表されます。一見、3時間ごとにデータが取得できているように見えますが、ここで表示されている時間は世界標準のUTC(協定世界時)を使っています。

OpenWeatherMapのように世界中のデータを扱うサービスの場合、UTCが使われることが一般的なようです。

JST(日本標準時)はUTCより9時間進んだ時刻になります。

というわけで、UTC(協定世界時)をJST(日本標準時)に変換する練習をしてみましょう。

先に取得したデータの中で、dtのタイムスランプを使って、➀協定世界時、➁日本標準時、➂短く削除した日本標準時を表してみましょう。

from datetime import datetime, timedelta, timezone

timestamp = 1642831200
tz = timezone(timedelta(), ‘UTC’)
utc = datetime.fromtimestamp(timestamp, tz)
print(utc)

tz= timezone(timedelta(hours=+9), ‘JCT’)
jst = datetime.fromtimestamp(timestamp, tz)
print(jst)

print(str(jst)[:-9])

解説

from datetime import datetime, timedelta, timezone標準ライブラリのdatatimeのtimedeltaやtimezoneを使うと時間のずれを修正できます。
timestamp = 1642831200 タイムスタンプを変数timestampに代入します。
tz = timezone(timedelta(), ‘UTC’)協定世界時を指定する書式です。それを変数tzに代入してます。
utc = datetime.fromtimestamp(timestamp, tz)書式です。先に設定した変数timestampから協定世界時を求めます。それを変数utcに代入してます。
print(utc)協定世界時を表示します。
tz= timezone(timedelta(hours=+9), ‘JCT’) 協定世界時から9時間後の日本標準時を求めます。それを変数tzに代入してます。
jst = datetime.fromtimestamp(timestamp, tz)書式です。先に設定した変数timestampから日本標準時を求めます。それを変数jstに代入しています。
print(jst)日本標準時を表示します。
print(str(jst)[:-9])日本標準時を表示します。+9:00が表示されて紛らわしく長くならないようstrを使い、後ろから9文字削除して表示します。

協定世界時、日本標準時、短く削除し見やすくした日本標準時を表してみました。

*尚、ここではバージョン「Python 3.10.1」を使用しています。

この本から引用、参考に学び、完成させることができました。しかし、ここではプログラミング初心者の私が詳しく解説することは、おこがましく、難しく出来ません(ToT)
その点、この本では丁寧な解説が載っていますので、解説とともにコードを書き、完成させればより深く学ぶことができます(^.^)、実際、初心者の私でもわかりやすかったです。身に付け消えないスキルが2,000円程ならコスパよく、買っておいてよかったと満足してます。



わからないことはプロフェッショナルから学ぶのが一番

キャリアアップに必要なスキルを取得しよう。

オンラインで受講ができるスクールですので、全国どこからでも。