Python:
Envoi d'une requête HTTP
How to:
Utiliser Python pour envoyer des requêtes HTTP est simple avec la bibliothèque requests
. D’abord, installez-le si ce n’est pas déjà fait :
pip install requests
Ensuite, un exemple basique pour récupérer le contenu d’une page web :
import requests
reponse = requests.get('https://www.example.com')
print(reponse.status_code)
print(reponse.text[:200]) # Affiche les 200 premiers caractères du contenu.
Pour envoyer des données en utilisant POST :
donnees = {'key': 'value'}
reponse = requests.post('https://www.example.com', data=donnees)
print(reponse.status_code)
Résultats typiques :
200
<!doctype html> ...
200
Deep Dive
Historiquement, l’envoi de requêtes HTTP s’effectuait en Python avec urllib
. requests
est apparu comme une alternative plus simple et plus conviviale.
Contrairement à urllib
, requests
simplifie le processus en gérant automatiquement les cookies, les en-têtes et les paramètres, rendant le code plus intuitif. De plus, requests
gère les exceptions plus clairement et supporte mieux les sessions HTTP.
Par exemple, avec requests
on peut gérer une session avec context manager, comme ceci :
with requests.Session() as session:
session.get('https://www.example.com') # utilise des cookies persistants si nécessaire
Un autre point fort de requests
est la gestion des requêtes asynchrones via requests-async
ou httpx
pour des workflows encore plus efficaces.
See Also
- Documentation de
requests
: https://requests.readthedocs.io/en/master/ - Comparaison entre
requests
eturllib
: https://findwork.dev/blog/advanced-usage-python-requests-timeouts-retries-hooks/ httpx
, une bibliothèque tierce pour les requêtes HTTP asynchrones: https://www.encode.io/httpx/