Utiliser Requests pour faire des requêtes HTTP en Python

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éponse
  • json() : 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *