Le package python requests
¶§
Le package requests permet d’effectuer programmatiquement des requêtes HTTP (comme celles que fait un navigateur).
Installation¶§
Depuis votre environnement virtuel, exécutez la commande suivante :
pip install requests
Si tout s’est bien passé, vous pouvez désormais importer le package dans l’interprétaur python :
>>> import requests
>>> requests.__version__
'2.22.0'
(le numéro de version peut évidemment être différent).
Premiers pas¶§
Pour effectuer une requête HTTP simple,
utilisez la fonction requests.get
en lui passant l’URL à requêter.
Cette fonction retourne un objet Réponse, possédant de nombreux attributs.
Ceux que vous utiliserez principalement sont :
status_code
: le code numérique à 3 chiffres indiquant le succès ou l’échec de la requête ;headers
: un objet similaire à un dictionnaire python contenant les en-têtes de la réponse ;text
: le corps de la réponse sous forme d’une chaîne de caractères (pour les fichiers textuels, comme par exemple HTML) ;content
: le corps de la réponse sous forme d’une chaîne d’octets (pour les fichiers binaires, comme par exemple les images).
Exemple :
>>> resp = requests.get("http://champin.net/2018/progweb-python/_static/td1/page1.html")
>>> resp.status_code
200
>>> resp.headers
{'Date': 'Fri, 23 Aug 2019 14:55:54 GMT', 'Server': 'Apache/2.4.10 (Debian)', 'Last-Modified': 'Wed, 15 Nov 2017 20:56:16 GMT', 'ETag': '"1b5-55e0bbc0a5c00-gzip"', 'Accept-Ranges': 'bytes', 'Vary': 'Accept-Encoding', 'Content-Encoding': 'gzip', 'Content-Length': '271', 'Keep-Alive': 'timeout=5, max=100', 'Connection': 'Keep-Alive', 'Content-Type': 'text/html; charset=UTF-8'}
>>> resp.text
'<!DOCTYPE html>\n<html>\n <head>\n <meta charset="utf-8">\n <title>Page n°1</title>\n <link rel="stylesheet" href="style.css">\n </head>\n <body>\n <img alt="the hacker symbol" src="http://www.catb.org/hacker-emblem/glider.png">\n <h1>Bienvenue sur la page n°1</h1>\n <ul>\n <li>Pour visiter <a href="page2.html">la page n°2</a>\n <li>Pour visiter <a href="form.html">le formulaire</a>\n </ul>\n </body>\n</html>\n\n'
Pour aller plus loin¶§
requests vous offre de nombreuses possibilités, notamment
- de contrôler les en-têtes des requêtes que vous en envoyez,
- d’envoyer d’autres types de requêtes, notamment POST,
- bien d’autres choses...
Consultez la documentation pour en savoir plus.