Introduction
La bibliothèque requests
est l’un des outils les plus utilisés en Python pour effectuer des requêtes HTTP. Elle permet de communiquer facilement avec des sites web ou des APIs REST, de récupérer des données, ou encore d’envoyer des formulaires. Requests rend la gestion des échanges HTTP intuitive grâce à une syntaxe simple et lisible.
Dans cet article, nous allons découvrir comment utiliser Requests pour interagir avec des ressources web, comprendre les types de requêtes courantes, gérer les réponses, envoyer des paramètres, et bien plus.
1. Installation de la bibliothèque Requests
Requests ne fait pas partie de la bibliothèque standard de Python. Vous pouvez l’installer via pip :
pip install requests
2. Faire une requête GET simple
La requête GET est utilisée pour récupérer des données à partir d’une URL.
import requests
response = requests.get("https://api.github.com")
# Afficher le code de statut et le contenu
print("Statut :", response.status_code)
print("Contenu :", response.text)
status_code
: Code HTTP (200 = OK, 404 = Not Found…)text
: Contenu brut de la réponsejson()
: Convertit la réponse en dictionnaire Python (si le contenu est au format JSON)
3. Ajouter des paramètres à une requête GET
Vous pouvez passer des paramètres à l’URL sous forme de dictionnaire.
params = {"q": "python", "sort": "stars"}
response = requests.get("https://api.github.com/search/repositories", params=params)
data = response.json()
print("Nombre de résultats :", data["total_count"])
4. Requête POST : envoyer des données
Les requêtes POST permettent d’envoyer des données, comme dans un formulaire.
url = "https://httpbin.org/post"
donnees = {"nom": "Alice", "email": "alice@example.com"}
response = requests.post(url, data=donnees)
print(response.json())
5. Envoyer des en-têtes personnalisés
Les headers permettent de spécifier le format de données, des jetons d’authentification, etc.
headers = {"User-Agent": "PythonApp/1.0", "Accept": "application/json"}
response = requests.get("https://api.github.com", headers=headers)
print(response.status_code)
6. Gérer les erreurs et les codes de statut
Il est essentiel de vérifier si la requête s’est bien déroulée :
response = requests.get("https://api.github.com/invalid")
if response.status_code == 404:
print("Erreur 404 : Page non trouvée")
elif response.ok:
print("Requête réussie")
else:
print("Erreur :", response.status_code)
7. Envoyer des données JSON
Pour envoyer du JSON, utilisez le paramètre json=
plutôt que data=
.
url = "https://httpbin.org/post"
donnees = {"nom": "Bob", "age": 30}
response = requests.post(url, json=donnees)
print(response.json())
8. Requêtes PUT, PATCH, DELETE
PUT (mise à jour complète)
requests.put("https://httpbin.org/put", data={"cle": "valeur"})
PATCH (mise à jour partielle)
requests.patch("https://httpbin.org/patch", data={"cle": "valeur"})
DELETE (suppression de ressource)
requests.delete("https://httpbin.org/delete")
9. Gestion des cookies
Vous pouvez lire ou définir des cookies avec Requests.
Lire les cookies d’une réponse
response = requests.get("https://httpbin.org/cookies/set?test=123")
print(response.cookies["test"]) # Affiche 123
Envoyer des cookies
cookies = {"session": "abc123"}
response = requests.get("https://httpbin.org/cookies", cookies=cookies)
print(response.json())
10. Télécharger un fichier avec Requests
Vous pouvez télécharger une ressource binaire (image, PDF, etc.) avec une requête GET.
url = "https://httpbin.org/image/png"
response = requests.get(url)
with open("image.png", "wb") as f:
f.write(response.content)
11. Utiliser les sessions pour conserver l'état
Une session permet de conserver les cookies, les en-têtes et d'autres paramètres entre plusieurs requêtes.
session = requests.Session()
session.headers.update({"User-Agent": "PythonBot/1.0"})
r1 = session.get("https://httpbin.org/cookies/set/sessioncookie/123456")
r2 = session.get("https://httpbin.org/cookies")
print(r2.text)
12. Timeout et gestion des exceptions
Pour éviter que votre programme reste bloqué, utilisez un timeout.
try:
response = requests.get("https://httpbin.org/delay/5", timeout=2)
except requests.exceptions.Timeout:
print("La requête a expiré !")
Conclusion
La bibliothèque Requests est un incontournable en Python pour effectuer des requêtes HTTP simplement et efficacement. Que ce soit pour interagir avec des APIs, récupérer des données JSON, ou encore envoyer des formulaires, Requests vous offre une interface claire et puissante. En maîtrisant ses fonctionnalités, vous pouvez automatiser de nombreux échanges web et intégrer vos applications Python à des services externes.