簡単なPythonスクリプトを使用して、現在の天気と予報を見つけます

Habréには、 愛好家がどのように天気を作るかについての興味深い記事があります。 熱心な人たちはやっており、彼らの努力の成果を活用します。OpenWeatherMap.orgからPythonスクリプトを使用して、まさにこの天気を取得します。



気象サービスにアクセスするには、 OpenWeatherMap.org Webサイトで簡単な登録手順を実行する必要があります。 要求を作成して送信し、 JSON形式で応答パケットを分析し、現在の気温と気象条件の説明を取得します。











openweathermap.orgへのサインアップは簡単で、残りはさらに簡単になります。



登録は、文字と数字のセットで構成される文字列App Idを取得するために必要です(16進数からのみのようです)。 この種類:

「6d8e495ca73d5bbc1d6bf8ebd52c4。」 登録後、個人アカウントに移動し、「APIキー」と呼ばれるアプリIDを取得する必要があります。



クエリ文字列の生成



最初に、彼らのデータベースで興味のある都市を見つけてください。 クエリ文字列は次のようになります。



http://api.openweathermap.org/data/2.5/find?q=Petersburg&type=like&APPID=6d8e495ca73d5bbc1d6bf8ebd52c4
      
      





リクエストでは、目的の都市(「Petersburg」の代わりに)およびアプリID(「6d8e495ca73d5bbc1d6bf8ebd52c4」の代わりに)を指定する必要があります。



 http://api.openweathermap.org/data/2.5/find?q=Petersburg,RU&type=like&APPID=6d8e495ca73d5bbc1d6bf8ebd52c4
      
      





実際、クエリ文字列はget関数でリクエストライブラリ自体によって生成され、リクエスト関数を送信するために使用します。



 requests.get("http://api.openweathermap.org/data/2.5/find", params={'q': s_city, 'type': 'like', 'units': 'metric', 'APPID': appid})
      
      







データベース内の目的の決済に関する情報の可用性を確認する



計画はこれです。 生成されたリクエストに応じて、JSON形式のパッケージを取得します。 パッケージを解析し、フィールド名から目的の値を取得します。



 import requests s_city = "Petersburg,RU" city_id = 0 appid = "- APPID" try: res = requests.get("http://api.openweathermap.org/data/2.5/find", params={'q': s_city, 'type': 'like', 'units': 'metric', 'APPID': appid}) data = res.json() cities = ["{} ({})".format(d['name'], d['sys']['country']) for d in data['list']] print("city:", cities) city_id = data['list'][0]['id'] print('city_id=', city_id) except Exception as e: print("Exception (find):", e) pass
      
      





サービスプロバイダーは名前ではなく識別子でリクエストを行うことを推奨しているため、次のリクエストの都市city_idの数値識別子を覚えておいてください。

答えには、リクエストに一致するいくつかの都市が含まれる場合があります。 ちなみに、リクエストで「モスクワ」を指定し、リクエスト例の行から国を削除すると、都市リストに複数の行が含まれることが保証されます。

都市:['モスクワ(RU)'、 'モスクワ(米国)'、 'モスクワ(米国)']


現在の天気情報の取得



必要な気象情報を取得するためだけに残ります。 帝国単位に興味がない場合は、リクエストでメートル単位を取得することを示します: "units = metric"。 天気の説明をロシア語で取得する必要がある場合は、「lang = ru」と指定します。



 try: res = requests.get("http://api.openweathermap.org/data/2.5/weather", params={'id': city_id, 'units': 'metric', 'lang': 'ru', 'APPID': appid}) data = res.json() print("conditions:", data['weather'][0]['description']) print("temp:", data['main']['temp']) print("temp_min:", data['main']['temp_min']) print("temp_max:", data['main']['temp_max']) except Exception as e: print("Exception (weather):", e) pass
      
      





あなたがサービスを信じるなら、今(モスクワで2016年11月14日23:20):

条件:小雪

temp:-5.25

temp_min:-6

temp_max:-5


5日間の予報



  try: res = requests.get("http://api.openweathermap.org/data/2.5/forecast", params={'id': city_id, 'units': 'metric', 'lang': 'ru', 'APPID': appid}) data = res.json() for i in data['list']: print( i['dt_txt'], '{0:+3.0f}'.format(i['main']['temp']), i['weather'][0]['description'] ) except Exception as e: print("Exception (forecast):", e) pass
      
      





次の結論が得られます。

2016-11-24 15:00 -1 7 /

2016-11-24 18:00 +2 7 /

2016-11-24 21:00 +2 7 /

2016-11-25 00:00 -0 7 /

2016-11-25 03:00 +0 7 /

2016-11-25 06:00 -0 6 /

...







owm-request.pyをダウンロードします 。 このスクリプトを機能させるには、OpenWeatherMap.orgへの登録時に取得した「APIキー」を最初の行に入力する必要があります。

たとえば、コマンドラインは次のとおりです。

$python owm-request.py Moscow,RU







OpenWeatherMap Webサイトには、まだ多くの興味深いものがあります-地理座標、気象アーカイブ、特定の気象観測所からの情報の取得。 利用可能なすべてのサービスの説明は、 http://openweathermap.org/apiにあります

OpenWeatherMapを使用してPythonで作業するために、専用のpyowmライブラリがあります。



OpenWeatherMapに加えて、同様の情報を提供する他のサイトがあります。 たとえば、 WorldWeatherOnline 。 利用可能なAPIはこちらでご覧いただけます。 登録が必要です。 Pythonにはpywwoというライブラリがあります。



PyCharmの JetBrainsに感謝します。



All Articles