Last update: 2014/11/25
14:23 stu:python_reseau:webapis https://deptinfo-ensip.univ-poitiers.fr/ENS/doku/doku.php/stu:python_reseau:webapis
https://deptinfo-ensip.univ-poitiers.fr/ENS/doku/ Printed on 2017/05/25 09:07
OpenWeatherMap
Le site web http://openweathermap.org propose une API permettant de connaître les conditions
météo sur n'importe quel point du globe. La requête GET est de la forme :
http://api.openweathermap.org/data/2.5/weather?q=LIEU
Le lieu est alors un nom de ville comme Poitiers,fr. On peut aussi rechercher par coordonnées
(latitude, longitude) ou identifiant de ville. La documentation est ici
http://api.openweathermap.org/API/
Le résultat obtenu, au format JSON (d'autres formats sont disponibles), est de ce type :
{'base': 'gdps stations',
'clouds': {'all': 90},
'cod': 200,
'coord': {'lat': 46.583328, 'lon': 0.33333},
'dt': 1379489400,
'id': 2986495,
'main': {'humidity': 100,
'pressure': 1008,
'temp': 290.15,
'temp_max': 290.15,
'temp_min': 290.15},
'name': 'Poitiers',
'rain': {'3h': 1},
'sys': {'country': 'FR', 'sunrise': 1379482876, 'sunset': 1379527430},
'weather': [{'description': 'overcast clouds',
'icon': '04d',
'id': 804,
'main': 'Clouds'}],
'wind': {'deg': 240, 'speed': 6.2}}
Le dictionnaire main contient par exemple la température (en Kelvins), la pression (en hectopascals),
et le taux d'humidité de l'air.
Voici un exemple de programme Python qui récupère ces données et les affiche.
import requests
url="http://api.openweathermap.org/data/2.5/weather?q=Poitiers,fr"
content=requests.get(url)
data=content.json()
t=data['main']['temp']
print("La témpérature est de {} degrés C".format(t-273.15))
On peut aussi se passer du module requests, mais le code devient moins clair :
import urllib.request as req
import json