PythonとOpenWeatherMap APIで任意の都市の天気を取得する方法
このチュートリアルでは、OpenWeatherMap APIを使用して、任意の都市の天気情報を取得する方法を解説します。OpenWeatherMap APIを利用するには、事前にAPIキーを取得する必要があります。APIキーは、公式サイトでアカウントを作成するだけで無料で入手できます。
アカウントを作成してAPIキーを取得しましょう。無料プランでは毎分60回までのリクエストが可能で、それ以上の利用には有料プランへの加入が必要です。ただし、このチュートリアルの範囲では無料版で十分です。HTTPリクエストの送信にはrequestsモジュール、レスポンスデータの処理にはjsonモジュールを使用します。以下の手順に従って、任意の都市の天気を取得してみましょう。
requestsモジュールとjsonモジュールをインポートします。
天気APIのベースURL(https://api.openweathermap.org/data/2.5/weather?)を初期化します。
都市名とAPIキーを設定します。
ベースURLにAPIキーと都市名を追加してリクエスト用URLを組み立てます。
requests.get()メソッドでGETリクエストを送信します。
jsonモジュールを使って、レスポンスから天気情報を抽出します。
コード例
それでは、実際のコードを見てみましょう。
# requestsとjsonをインポート
import requests, json
# ベースURL
BASE_URL = "https://api.openweathermap.org/data/2.5/weather?"
# 都市名
CITY = "Hyderabad"
# APIキー
API_KEY = "Your API Key"
# URLの組み立て
URL = BASE_URL + "q=" + CITY + "&appid=" + API_KEY
# HTTPリクエストの送信
response = requests.get(URL)
# レスポンスのステータスコードを確認
if response.status_code == 200:
# JSON形式でデータを取得
data = response.json()
# mainブロックを取得
main = data['main']
# 気温を取得
temperature = main['temp']
# 湿度を取得
humidity = main['humidity']
# 気圧を取得
pressure = main['pressure']
# 天気レポート
report = data['weather']
print(f"{CITY:-^30}")
print(f"Temperature: {temperature}")
print(f"Humidity: {humidity}")
print(f"Pressure: {pressure}")
print(f"Weather Report: {report[0]['description']}")
else:
# エラーメッセージを表示
print("Error in the HTTP request")
実行結果
上記のプログラムを実行すると、次のような出力が得られます。
----------Hyderabad----------- Temperature: 295.39 Humidity: 83 Pressure: 1019 Weather Report: mist
補足:温度の単位について
デフォルト設定では、気温はケルビン(K)で返されることに注意してください。摂氏(℃)に変換するには、取得した値から273.15を引きます。また、URLに「&units=metric」パラメータを追加すれば、APIから直接摂氏で気温を受け取ることも可能です。
まとめ
このように、OpenWeatherMap APIとPythonのrequestsモジュールを組み合わせれば、わずか数十行のコードで世界中の都市の天気情報を簡単に取得できます。応用として、複数都市の天気を一括取得したり、定期的に実行して天気通知アプリを作ったりすることもできるので、ぜひ試してみてください。
チュートリアルの内容で不明な点やつまずいた箇所があれば、コメント欄でお気軽にお尋ねください。
-
PythonのNews APIでトップニュースを取得する方法【サンプルコード付き】
News APIは、世界中のニュースサイトから記事を検索・取得できる非常に有名なAPIです。このAPIを利用すれば、任意のニュースサイトから最新のトップニュースの見出しを簡単に取得できます。 ただし、News APIを使うにはAPIキーが必要です。APIキーはNews API公式サイトで無料登録すると発行できますので、事前に取得しておきましょう。 サンプルコード:BBCのトップニュースを取得する 以下は、Pythonのrequestsライブラリを使って、BBC Newsのトップニュースの見出しを番号付きで表示するサンプルコードです。 import requests def top_new
-
Pythonで作るWebサイトアラーム!指定時刻に自動でページを開く方法
はじめに この記事では、Pythonを使って「Webサイトアラーム」を作成する方法を解説します。あらかじめURLと時刻を指定しておくと、システムの時刻がその瞬間に達したとき、自動的にブラウザで目的のWebページを開いてくれるシンプルな仕組みです。 課題の概要 WebサイトのURLと時刻を入力として受け取り、システム時刻が指定時刻に達したタイミングで、ブラウザ上に該当するWebページを表示します。 ブックマークには日々利用するさまざまなWebページを保存できますが、「毎日決まった時刻に特定のページを開いて作業したい」という場面は少なくありません。たとえば、朝会の資料ページや業務システムへのログ