================================ Le package python ``requests`` ================================ Le package `requests`_ permet d'effectuer programmatiquement des requêtes HTTP (comme celles que fait un navigateur). Installation ============ .. highlight: bash Depuis votre `environnement virtuel `:doc:, exécutez la commande suivante :: pip install requests .. highlight: python 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 '\n\n \n \n Page n°1\n \n \n \n the hacker symbol\n

Bienvenue sur la page n°1

\n \n \n\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. .. _requests: https://2.python-requests.org/en/master/ .. _documentation: https://2.python-requests.org/en/master/#the-user-guide