Python et les Apis Web

publicité
2017/05/25 09:07
1/3
Python et les Apis Web
Python et les Apis Web
Bon nombre de services Web proposent des API (Application Programming Interface) basées sur
HTTP. C'est ce qui permet entres autres à des tiers de développer des clients pour ces services Webs
(clients Twitter par exemple).
Ces APIS Web peuvent suivre l'un ou l'autre des modèles les plus communs : REST, …. ~ En règle
générale, les APIs sont documentées :
https://developers.google.com/youtube/2.0/developers_guide_json
http://developer.vimeo.com/apis/
https://dev.twitter.com/docs/api/1.1/overview
http://www.reddit.com/dev/api
http://wiki.openstreetmap.org/wiki/API_v0.6
https://code.google.com/p/google-api-python-client/
Voici quelques exemples de ce qu'il est possible de faire avec Python, en utilisant le module
requests pour simplifier les requêtes Web.
Récupérer des objets OpenStreetMap
import requests
r =
requests.get('http://api06.dev.openstreetmap.org/api/0.6/map?bbox=0.2,46.5,0
.4,46.7')
print(r)
Accéder à un flux RSS (ici celui d'Interstices)
Utilisation du module python-feedparser (http://pythonhosted.org/feedparser/)
import feedparser
d = feedparser.parse('https://interstices.info/feed/Rss2.jsp?id=c_13634')
print(d.feed.title)
for i in d.entries :
print(i.title,i.published,"\n================")
print(i.id)
print(i.link)
print(i.description)
print()
Le numéro id=XXX de l'URL est susceptible de changer. Vous pouvez le trouver sur la page de garde
d'Interstices
Informatique, Programmation, Python, Enseignement... - https://deptinfo-ensip.univ-poitiers.fr/ENS/doku/
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
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
https://deptinfo-ensip.univ-poitiers.fr/ENS/doku/
Printed on 2017/05/25 09:07
2017/05/25 09:07
3/3
Python et les Apis Web
url="http://api.openweathermap.org/data/2.5/weather?q=Poitiers,fr"
u=req.urlopen(url)
content=u.read()
jsonstr=content.decode('ascii')
data=json.loads(jsonstr)
t=data['main']['temp']
print("La témpérature est de {} degrés C".format(t-273.15))
OpenFoodFacts
Le site http://fr.openfoodfacts.org/ recense des données sur les produits alimentaires. L'alimentation
de la base est faite grâce au crowdsourcing, et les données sont librement accessibles.
On peut interroger la base à partir du code barre d'un produit :
http://fr.openfoodfacts.org/api/v0/produit/3029330003533.json
Plus d'infos ici : http://fr.openfoodfacts.org/data
Ressources
Using APIs with Python requests module
http://c0ding.github.io/tweetuoso/
https://github.com/sixohsix/twitter
https://github.com/i-kiwamu/python3-oauth2
http://www.pythonforbeginners.com/python-on-the-web/how-to-access-various-web-services-inpython/
http://www.pythonforbeginners.com/python-on-the-web/using-requests-in-python/
http://www.pythonforbeginners.com/code-snippets-source-code/bitly-shortener-with-python/
http://jsonviewer.stack.hu/ ou http://jsonlint.com/
http://test.data-sncf.com/index.php/
From:
https://deptinfo-ensip.univ-poitiers.fr/ENS/doku/ - Informatique, Programmation, Python,
Enseignement...
Permanent link:
https://deptinfo-ensip.univ-poitiers.fr/ENS/doku/doku.php/stu:python_reseau:webapis
Last update: 2014/11/25 14:23
Informatique, Programmation, Python, Enseignement... - https://deptinfo-ensip.univ-poitiers.fr/ENS/doku/
Téléchargement