Le module Python requests

bibliothèque python requests

1. A propos du module Python requests

La bibliothèque Python "requests" est un module Python populaire utilisé pour effectuer des requêtes HTTP de manière simple et conviviale. Elle facilite l'interaction avec les ressources en ligne, telles que les API Web, les sites web, et d'autres services accessibles via le protocole HTTP. La bibliothèque "requests" fournit une interface conviviale pour envoyer des requêtes HTTP, gérer les réponses et effectuer diverses opérations liées aux communications en réseau. Qu'il s'agisse de requêtes simples ou de scénarios plus complexes impliquant des sessions, des cookies, des redirections et d'autres détails, "requests" simplifie grandement la gestion des communications réseau dans vos projets Python.

2. Caractéristiques et avantages du module requests

Le module "requests" présente un ensemble de caractéristiques et d'avantages qui en font un choix privilégié pour effectuer des requêtes HTTP et interagir avec des ressources en ligne. Voici quelques-unes de ses caractéristiques et avantages clés :

  1. Simplicité d'utilisation : Le module "requests" offre une interface simple et intuitive qui permet d'effectuer des requêtes HTTP avec un minimum de code. Cela facilite la mise en place rapide de communications réseau sans devoir se soucier des détails complexes.
  2. Syntaxe explicite : Les méthodes du module "requests" (telles que get(), post(), etc.) sont intuitivement nommées, ce qui rend le code plus lisible et compréhensible, même pour les débutants en programmation.
  3. Gestion des paramètres et des en-têtes : Vous pouvez ajouter des paramètres de requête et des en-têtes personnalisés facilement, ce qui est utile pour personnaliser vos interactions avec les serveurs.
  4. Prise en charge des méthodes HTTP : Le module supporte une variété de méthodes HTTP standard, vous permettant d'effectuer des opérations telles que l'obtention de ressources (GET), l'envoi de données (POST), la mise à jour de ressources (PUT), et bien plus encore.
  5. Gestion des sessions et des cookies : Le module permet de maintenir des sessions persistantes, ce qui est important pour des scénarios où vous devez maintenir un état sur le serveur au fil des requêtes. Il gère également automatiquement les cookies.
  6. Gestion des réponses : Le contenu des réponses est facilement accessible via des propriétés comme text, content, et json(), facilitant ainsi la manipulation et l'analyse des données reçues.
  7. Gestion des erreurs : Le module gère les erreurs HTTP et les exceptions de manière élégante, ce qui permet une meilleure gestion des cas d'erreur et des problèmes de communication.
  8. Facilité de téléchargement de fichiers : "requests" facilite le téléchargement de fichiers depuis des URL en fournissant une méthode simple pour gérer ces opérations.
  9. Documentation exhaustive : La documentation officielle du module "requests" est complète, bien organisée et comprend de nombreux exemples, ce qui rend l'apprentissage et l'utilisation du module plus aisés.
  10. Communauté active : "requests" est largement utilisé dans la communauté Python, ce qui signifie que vous pouvez trouver une multitude de ressources, de tutoriels et de solutions aux problèmes courants en ligne.
  11. Gestion des redirections : "requests" gère automatiquement les redirections HTTP, ce qui signifie qu'il suit les redirections 3xx pour vous, simplifiant ainsi la navigation entre les différentes ressources en ligne.
  12. Gestion des certificats SSL : Le module gère également les certificats SSL, ce qui permet d'effectuer des requêtes sécurisées vers des serveurs HTTPS sans nécessiter de configuration complexe.
  13. Personnalisation des timeouts : Vous pouvez spécifier des délais d'attente (timeouts) pour les requêtes, ce qui vous évite de rester bloqué sur une requête qui ne répond pas.
  14. Compression automatique : "requests" prend en charge la compression des réponses HTTP, ce qui peut accélérer le transfert de données et économiser de la bande passante.
  15. Gestion de contenu binaire : Outre les données textuelles, "requests" peut gérer les données binaires, ce qui est utile pour les téléchargements de fichiers, par exemple.
  16. Personnalisation des User-Agents : Vous pouvez spécifier un en-tête User-Agent personnalisé pour simuler différents navigateurs ou clients lors des requêtes.
  17. Authentification basique et avancée : "requests" prend en charge plusieurs méthodes d'authentification, notamment l'authentification de base (Basic Auth) et l'authentification via tokens.
  18. Utilisation avec les sessions web : Les sessions maintenues avec "requests" conservent automatiquement les cookies entre les requêtes, ce qui est pratique pour les interactions continues avec un site web.
  19. Personnalisation des connexions : Vous pouvez contrôler des aspects spécifiques des connexions HTTP, tels que les timeouts, les proxies, et les paramètres de sécurité.
  20. Gestion des fichiers de téléchargement volumineux : Pour les téléchargements de fichiers volumineux, "requests" permet de les récupérer progressivement, ce qui évite de saturer la mémoire.

3. Installation de la bibliothèque requests

Incorporer la bibliothèque requests à votre environnement est une tâche des plus simples ! Il vous suffit d'ouvrir l'invite de commandes CMD et de saisir :

Pour obtenir des renseignements concernant la bibliothèque Requests, tels que le nom, la version, la page d'accueil, l'auteur, etc., il vous faut simplement exécuter la commande suivante :

4. usage de la bibliothèque Python requests

Nous allons commencer par un simple exemple permettant de récupérer la page: https://fr.wikipedia.org/ à l'aide de la méthode get().

En mettant en action le code précédent, le résultat obtenu correspond au contenu HTML de la page Wikipedia sous forme de texte. Néanmoins, la classe requests ne se limite pas à la seule utilisation de la méthode get(), mais elle offre en effet une variété de méthodes qui facilitent l'extraction, la suppression et l'envoi de données.

Il faut noter qu'il n' y a pas seulement l'attribut text pour la méthode get(), mais en réalité un ensemble d'attributs pour lire le contenu entier, le header, obtenir le status de connexion...




Exemple (extraction du contenu d'une page web)

Dans cet exemple, nous allons traiter un exemple simple d'extraction du contenu d'une page web via son url en utilisant la bibliothèque Python "requests". A tritre d'exemple, nous allons récupérer et afficher le contenu brut de la page web www.example.com.

Ce qui affiche après exécution le contenu de la page:

Dans cet exemple:

  1. Nous utilisons "requests": pour envoyer une requête HTTP à la page spécifiée par l'URL.
  2. Ensuite (statut HTTP 200): nous vérifions si la réponse a abouti .
  3. Si tel est le cas: nous affichons le contenu brut de la page en utilisant la propriété content de l'objet de réponse.

Remarque

Veuillez noter que le contenu brut affiché peut être difficile à lire, car il inclut le code HTML de la page ainsi que toutes les balises et les éléments HTML. Utiliser BeautifulSoup ou un autre parseur HTML peut rendre l'analyse du contenu beaucoup plus facile et structurée.

5. Transmission de données et établissement de connexion à un serveur

Lorsque vous souhaitez faire parvenir des informations via le module requests, la démarche est aisée : il vous faut simplement rassembler ces données au sein d'un dictionnaire, puis employer la méthode post() :

Syntaxe pour l'authentification

Afin de saisir de manière approfondie le processus d'authentification au moyen du module requests, nous allons aborder un cas concret en utilisant notre propre site web : https://www.tresfacile.net.
Explorons désormais les possibilités avec le profil virtuel qui suit :

  1. Identifiant : 'robert19'
  2. Prénom : 'Robert'
  3. Nom : 'Laurent'
  4. Email : 'robert19@gmail.com'
  5. Password : 'robert2022@@'

Ensuite, nous établirons le dictionnaire englobant les données de connexion et de session en employant la fonction Session(). Ensuite, une redirection vers la page du profil sera orchestrée pour afficher les éléments relatifs au compte utilisateur :

Désormais, en exécutant une recherche au sein du contenu affiché à l'écran, nous pouvons repérer les détails de l'utilisateur :

6. Liste des méthodes et attributs du module requests

Le module "requests" en Python propose une variété de méthodes et d'attributs pour gérer les requêtes HTTP. Nous allons présenter ici qu'une sélection des méthodes et attributs les plus couramment utilisés du module "requests". Pour une liste complète et détaillée, vous pouvez vous référer à la documentation officielle de "requests" : https://docs.python-requests.org/en/latest/api/

Voici une liste des principales méthodes et attributs du module "requests" :

6.1 Méthodes pour effectuer des requêtes HTTP

  1. get(url, params=None, **kwargs): Effectue une requête GET vers l'URL spécifiée.
  2. post(url, data=None, json=None, **kwargs): Effectue une requête POST vers l'URL spécifiée avec des données.
  3. put(url, data=None, **kwargs): Effectue une requête PUT vers l'URL spécifiée avec des données.
  4. delete(url, **kwargs): Effectue une requête DELETE vers l'URL spécifiée.
  5. head(url, **kwargs): Effectue une requête HEAD vers l'URL spécifiée pour obtenir uniquement les en-têtes.
  6. options(url, **kwargs): Effectue une requête OPTIONS vers l'URL spécifiée pour obtenir les méthodes HTTP prises en charge.
  7. patch(url, data=None, **kwargs): Effectue une requête PATCH vers l'URL spécifiée avec des données.




6.2 Méthodes pour gérer les réponses HTTP

  1. .text: Récupère le contenu de la réponse en tant que texte.
  2. .content: Récupère le contenu de la réponse en tant que données binaires.
  3. .json(): Récupère le contenu de la réponse et le décode en JSON.
  4. .status_code: Récupère le code de statut HTTP de la réponse.
  5. .headers: Récupère les en-têtes de la réponse sous forme de dictionnaire.

6.3 Méthodes pour gérer les sessions et les cookies

  1. Session(): Crée une session pour maintenir les cookies et les paramètres entre les requêtes.
  2. .get(url, params=None, **kwargs): Méthode GET spécifique pour une session.
  3. .post(url, data=None, json=None, **kwargs): Méthode POST spécifique pour une session.

6.4 Autres méthodes et attributs

  1. .headers: Dictionnaire des en-têtes de la requête.
  2. .params: Dictionnaire des paramètres de la requête (utilisé pour les requêtes GET).
  3. .json(): Méthode pour décoder la réponse en JSON.
  4. .status_code: Code de statut de la réponse HTTP.
  5. .cookies: Dictionnaire des cookies de la réponse.
  6. .history: Liste des redirections effectuées lors de la requête.
  7. .raise_for_status(): Méthode pour générer une exception si la réponse a un code d'erreur.

 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply