web-dev-qa-db-fra.com

Python API météo

Comment importer des données météorologiques dans un programme Python?

30
Steven

Depuis que Google a fermé son API météo, je suggère de vérifier OpenWeatherMap :

Le service OpenWeatherMap fournit gratuitement des données météorologiques et une API de prévisions adaptées à tous les services cartographiques tels que les applications Web et les smartphones. L'idéologie est inspirée d'OpenStreetMap et de Wikipedia qui rendent les informations gratuites et disponibles pour tout le monde. OpenWeatherMap fournit un large éventail de données météorologiques telles que la carte avec la météo actuelle, les prévisions de la semaine, les précipitations, le vent, les nuages, les données des stations météorologiques et bien d'autres. Les données météorologiques sont reçues des services de diffusion météorologique mondiaux et de plus de 40 000 stations météorologiques.

Ce n'est pas une bibliothèque Python, mais elle est super facile à utiliser, car vous pouvez obtenir des résultats au format JSON.

Voici un exemple utilisant Demandes :

>>> from pprint import pprint
>>> import requests
>>> r = requests.get('http://api.openweathermap.org/data/2.5/weather?q=London&APPID={APIKEY}')
>>> pprint(r.json())
{u'base': u'cmc stations',
 u'clouds': {u'all': 68},
 u'cod': 200,
 u'coord': {u'lat': 51.50853, u'lon': -0.12574},
 u'dt': 1383907026,
 u'id': 2643743,
 u'main': {u'grnd_level': 1007.77,
           u'humidity': 97,
           u'pressure': 1007.77,
           u'sea_level': 1017.97,
           u'temp': 282.241,
           u'temp_max': 282.241,
           u'temp_min': 282.241},
 u'name': u'London',
 u'sys': {u'country': u'GB', u'sunrise': 1383894458, u'sunset': 1383927657},
 u'weather': [{u'description': u'broken clouds',
               u'icon': u'04d',
               u'id': 803,
               u'main': u'Clouds'}],
 u'wind': {u'deg': 158.5, u'speed': 2.36}}

Et voici un exemple utilisant PyOWM , un wrapper Python autour de l'API Web OpenWeatherMap:

>>> import pyowm
>>> owm = pyowm.OWM()
>>> observation = owm.weather_at_place('London,uk')
>>> w = observation.get_weather()
>>> w.get_wind()
{u'speed': 3.1, u'deg': 220}
>>> w.get_humidity()
76

La documentation officielle de l'API est disponible ici .

Pour obtenir la clé API, ouvrez une carte météo ici

50
Paolo Moretti