Introduction à Requests
Requests est une bibliothèque Python simplifiée pour effectuer des requêtes HTTP, construite sur urllib. Elle offre une interface intuitive pour interagir avec des services web.
Installation
pip install requests
Caractéristiques principales
- Gestion des connxeions persistantes et des pools de connexions
- Support des cookies pour maintenir les sessions
- Encodage atuomatique des réponses
- Gestion simplifiée des téléchargements et uploads
Différences avec urllib
- Syntaxe plus concise et intuitive
- Gestion automatique des encodages
- Interface orientée objet simplifiée
Méthodes de réponse
| Méthode | Description |
|---|---|
| text | Contenu HTML décodé selon l'encodage détecté |
| content | Données binaires brutes avec décompression automatique |
| json() | Décodage des réponses JSON |
| status_code | Code d'état HTTP de la réponse |
| headers | En-têtes de la réponse sous forme de dictionnaire |
Méthodes HTTP principales
- GET : Récupération de ressources
- POST : Envoi de données
- PUT : Mise à jour complète de ressource
- PATCH : Mise à jour partielle
- DELETE : Suppression de ressource
Paramètres de requête
- params : Paramètres d'URL pour les requêtes GET
- data : Corps de requête pour POST
- json : Données sérialisées en JSON
- headers : En-têtes HTTP personnalisés
- timeout : Délai maximal d'attente
- proxies : Configuration des serveurs proxy
Exemple de requête GET
import requests
endpoint = 'https://api.exemple.com/data'
entetes = {'User-Agent': 'MonScript'}
filtres = {'page': 1, 'tri': 'date'}
reponse = requests.get(url=endpoint, headers=entetes, params=filtres)
print(reponse.json())
Gestion des erreurs
try:
reponse = requests.get('https://api.exemple.com', timeout=3)
reponse.raise_for_status()
except requests.exceptions.RequestException as erreur:
print(f"Erreur réseau: {erreur}")
Utilisation de sessions
with requests.Session() as session:
session.post('https://exemple.com/login', data={'user':'test','pass':'secret'})
reponse = session.get('https://exemple.com/profil')
print(reponse.text)
Téléversement de fichier
fichiers = {'fichier': open('rapport.pdf', 'rb')}
reponse = requests.post('https://exemple.com/upload', files=fichiers)
print(reponse.status_code)
Authentification de base
reponse = requests.get(
'https://api.exemple.com/secured',
auth=('utilisateur', 'motdepasse')
)