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/