Récupérer le contenu d'une page avec requests
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte00:00:00 :Pour pouvoir utiliser Request dans notre script, il va falloir l'installer car il n'est pas inclus avec la bibliothèque standard de Python.Dans un terminal avec notre environnement virtuel, on va donc installer Request avec pip, donc pip install request.
00:00:13 :Je valide avec entrée, c'est assez rapide, et on va pouvoir ensuite l'importer dans notre script.Donc on va faire import request, et on va créer notre première requête avec request.get.
00:00:24 :Alors faites bien attention de ne pas oublier le s, c'est une erreur que je vois très souvent.Les gens pensent qu'en fait c'est le module request sans s, donc moi je fais bien attention de dire requests avec un s à la fin pour qu'on s'en souvienne.
00:00:36 :Donc on va pouvoir faire une requête get, on peut faire également des requêtes post, et on peut faire plein d'autres choses avec request.Nous dans notre cas, on va se contenter de simple requête get pour aller récupérer les informations d'une page.
00:00:48 :Donc on va prendre l'exemple de Google, et on va mettre tout ça dans un objet qu'on va appeler response.Et je vais mettre ici tout simplement l'adresse de Google, donc https://www.google.com
00:01:02 :Et je vais faire un print de cette réponse pour vous montrer ce que ça retourne.Donc je lance le script, et là on a bien une réponse avec un code de 200, donc on peut afficher ce code avec .status code,
00:01:14 :et on va récupérer directement un nombre anti qui correspond au code de la requête HTTP,donc le code retour, qui dans ce cas-ci nous indique que la requête a été correctement effectuée.
00:01:24 :Si on souhaite récupérer le contenu de la page, on peut utiliser .text, et on va récupérer tout le code HTML de la page.Donc vous voyez qu'il y a pas mal de choses, donc là on s'en rend peut-être pas bien compte,mais c'est parce qu'en fait tout le code est sur la largeur comme ceci, puisqu'il n'est pas formaté correctement dans le terminal.
00:01:40 :Donc là on a tout qui est dans un gros bloc, et on voit bien du code HTML avec un doctype HTML ici,la balise HTML et plein d'autres choses, et même du JavaScript à l'intérieur de cette page.
00:01:51 :Une chose qui est bien importante de garder en tête, c'est que quand on fait des requêtes vers un site web,il y a plein de cas de figure dans lesquels on peut avoir des erreurs.
00:01:59 :Donc quand on fait des scripts un peu plus avancés, il va être important de gérer ces erreurs.Ces erreurs on peut les vérifier soit avec le status code comme on a vu, donc en faisant un print du status code,on peut vérifier si on a un code de retour qui est par exemple 200, 201, 202, etc.
00:02:15 :Donc les codes de succès. On peut vérifier si on a un code plutôt d'erreur, comme les 404, les 500, etc.On a également une fonction qui s'appelle raise for status, qui va nous permettre de lever une erreurdans le cas où on a un problème avec la requête.
00:02:30 :Donc là si je relance mon script, dans ce cas-ci, on n'aura pas d'erreur de levée,donc je ne suis pas obligé de faire un print. Là j'ai fait un print de ce raise, donc ça me retourne none.
00:02:38 :Mais on peut juste faire donc raise for status. Dans ce cas-ci, il n'y a pas eu d'erreur de levéepuisque l'URL fonctionne, mais si je fais une modification, par exemple si je mets une autre URL,par exemple on va mettre cette URL n'existe pas, en espérant qu'elle n'existe vraiment pas.
00:02:51 :Je vais relancer donc mon script, et là cette fois-ci on va bien avoir une erreur qui est levée,dans ce cas-ci une connection error. Donc on peut gérer beaucoup d'erreurs comme ça.
00:03:01 :Je vais vous mettre un petit exemple d'un script ici avec différents codes d'erreurspour vous montrer toutes les différentes erreurs qu'on peut avoir.Il y en a plus que ça, mais ça c'est les erreurs classiques qu'on va retrouver.
00:03:11 :On va avoir des erreurs directement sur le protocole HTTP avec HTTP error.On peut avoir également des erreurs de timeout.Donc ça c'est par exemple s'il y a un site web qui met trop de temps à répondre,donc ça veut dire que la requête va fonctionner.
00:03:23 :On ne va pas avoir une erreur comme ici avec cette URL qui n'existe pas,mais on va avoir un timeout, c'est-à-dire que la requête prendra trop de temps à être effectuéeet au bout d'un moment la requête va arrêter d'essayer,et dans ce cas-ci on va se retrouver avec cette erreur de timeout.
00:03:37 :Donc dans les différents cas de figure, à vous de voir quelles erreurs vous avez besoin de géreret vous pouvez donc lever ces erreurs avec raise for status,ou comme on l'a vu, vérifier avec le status code,et ensuite vous pouvez faire une structure conditionnelleou passer par des blocs try except comme ici avec les exceptions et le raise for status.
00:03:55 :Donc si je reviens sur notre exemple avec Google,on va pouvoir donc récupérer ce code HTMLet le sauvegarder très facilement sur notre disque dur avec la gestion de Python des fichiers.
00:04:06 :Donc par exemple ici on va faire un with open,on va le mettre dans le même dossier,donc on va faire un chemin relatif ici index.html pour créer le fichier dans le même dossier que notre fichier Python.
00:04:16 :On va ouvrir ce fichier en mode écriture,et on va l'ouvrir en tant que f et faire un f.write de response.txtpuisqu'on avait vu tout à l'heure response.txt va nous retourner tout le code HTML de la page.
00:04:29 :Donc si je relance le script, on va voir qu'on a bien un fichier index.html qui a été créé ici,et on voit qu'on a bien le code qu'on avait tout à l'heure dans le terminal.
00:04:37 :Donc comme je vous disais c'est un petit peu brouillon ici,pour y voir un petit peu plus clair on peut faire un reformatage,donc si on va dans code ici on peut faire reformat file,et ça va un petit peu tout remettre en ordre avec les bons retours à la ligne, les bonnes tabulations,
00:04:51 :et là on voit qu'on a quelque chose qui ressemble donc un peu plus à une page HTML,on a le head ici, le body, on va avoir un script ici,on va avoir ensuite des divs qui vont correspondre probablement,voilà donc là moi je suis au Portugal,donc on a la pesquisa ici qui est donc la recherche qu'on souhaite faire,
00:05:06 :donc avec un input probablement quelque part ici pour faire notre recherche,voilà un input, il y en a probablement d'autres sur la page qui correspondent,là on a un input hidden, donc on a probablement pas mal de choses ici qui servent à faire fonctionner Google,et un input qui est l'input principal qui nous permet d'effectuer notre requête.
00:05:24 :Donc vous voyez c'est très très simple, en quelques lignes de code,la plupart du temps on va faire une requête GET vers un site,pour ensuite récupérer le response.txt,
00:05:33 :vous pouvez également utiliser le .json si vous faites des requêtes vers des points d'APIqui vont retourner des données au format JSON,et avec le response.json vous aurez directement les données qui vont vous être retournées
00:05:45 :sous le format d'un dictionnaire en Python,donc c'est plus facile si vous souhaitez comme ça naviguer à l'intérieur cette structure de données en JSON,dans notre cas on va récupérer le texte qui est donc du code HTML,et on va ensuite utiliser la bibliothèque Beautiful Soup pour lire ce HTML,
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.