Scraping simple avec requests
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte00:00:00 :Avant d'utiliser des outils comme Playwright qui sont un peu plus avancés et qui vont nouspermettre d'effectuer un scrapping exactement de la même façon qu'on le ferait manuellement,c'est-à-dire en se déplaçant d'une page à l'autre, en rentrant des informations dans labarre de recherche, etc. On va déjà commencer par un scrapping très simple avec la bibliothèque
00:00:18 :Request qui va nous permettre d'effectuer une simple requête HTTP vers l'URL qu'on souhaitescrapper pour vérifier si on peut récupérer des informations de cette façon. Ce n'est pas
00:00:28 :forcément la façon la plus avancée de faire mais c'est déjà bien de vérifier si on peut le fairepuisque pour de nombreux sites ça peut être une façon très efficace et simple de faire unscrapping avec seulement quelques lignes de code. Donc ce que je vais faire c'est commencer par
00:00:40 :importer cette bibliothèque qui est Request et il ne faut bien sûr pas oublier le S ici,c'est une erreur que je vois très souvent donc des gens qui pensent qu'il faut utiliser Requestcomme ceci c'est bien Request avec un S sinon vous aurez une erreur et je vais ensuite copier
00:00:53 :donc l'URL qui nous intéresse qui est une URL assez longue, vous allez voir vous la trouverezdans la source des formations, vous pouvez utiliser n'importe quelle autre URL d'une pagequi contient des informations qui vous intéresseraient sur Airbnb. Nous ce qui va nous
00:01:05 :intéresser ici c'est les informations sur les locations à Rio de Janeiro et donc on va mettrecette URL ici dans notre script qui est tout simplement une longue chaîne de caractères.
00:01:14 :On va ensuite faire une requête avec donc Request et une requête qui va être de type Get donc jevais faire tout simplement Request.Get vers cette URL et on va récupérer le résultat dans une
00:01:24 :variable qu'on va appeler Response. Qu'est-ce qu'on va faire ensuite ? Eh bien tout simplementfaire un print de Response.Text pour vérifier ce que ça nous retourne. Donc pour l'instant je
00:01:33 :reste très simple, on verra par la suite comment on peut grandement améliorer notre script pours'assurer que tout fonctionne correctement et dans le cas d'un script simple comme celui-ciqu'on peut quand même ajouter une gestion d'erreur, du logging pour savoir ce qui se passe etc. Pour
00:01:47 :l'instant je vais juste vérifier si j'ai bien quelque chose qui m'est retourné ici, si on aune erreur ou quoi que ce soit. Donc là je vais mettre tout ça à l'intérieur d'une fonction, donc
00:01:55 :je vais créer une fonction Main tout simplement, je vais indenter tout ça à l'intérieur de cettefonction et là on va appeler cette fonction Main ici à l'intérieur de cette structure conditionnelle.
00:02:03 :Si jamais vous vous demandez à quoi sert cette variable Name et cette structure conditionnelle,on a un glossaire complet sur le sujet sur Doctrink que je vous invite à aller consulter et quiexplique précisément à quoi sert cette structure conditionnelle. De retour dans mon script, je vais
00:02:17 :donc lancer le script en cliquant ici en haut à droite pour vérifier ce que ça me retourne et onvoit ici qu'on a beaucoup beaucoup d'éléments. Donc on a bien du code HTML et ce que je vais faire
00:02:27 :c'est là encore tout simplement une recherche donc avec ctrl F ou commande F sur Mac et jevais coller le nom de la classe qu'on avait tout à l'heure. Donc on voit notre classe ici, on voit
00:02:35 :qu'elle apparaît 17 fois donc ça veut bien dire qu'on a cette répétition qu'on avait quand on aanalysé notre page et on retrouve bien le prix ici. Donc ça indique bien que tout fonctionne,
00:02:44 :que l'on peut récupérer avec une simple requête vers notre URL les informations. On voit égalementqu'on n'est pas bloqué par le javascript puisque sur les sites modernes du style Airbnb, généralementon a des API javascript qui vont aller chercher du front au back les informations et il n'est pas
00:03:01 :rare que quand on fasse une requête toute simple comme celle-ci avec request qui ne peut pas utiliserde javascript et bien on n'ait tout simplement aucune information qui soit retournée avec notrerequête simple comme ceci. Donc là c'est déjà assez cool de voir qu'on peut récupérer directement
00:03:15 :les informations qui nous intéressent comme ceci et qu'on n'a pas forcément besoin de passer parun outil comme Playwright même si encore une fois Playwright va nous permettre de faire unscript beaucoup plus avancé et beaucoup plus crédible pour un site comme Airbnb pour éviterd'être bloqué puisque là si vous faites une requête simple comme celle-ci on va très rapidement
00:03:31 :être identifié comme un bot de scrapping donc il y a plein de façons d'éviter ça mais c'est sûr queça va être plus difficile avec request qu'avec un outil comme Playwright qui va nous permettred'émuler beaucoup plus facilement le comportement d'un humain sur le site. Donc avant de terminer
00:03:45 :cette partie ce que je vais faire c'est tout simplement renommer cette fonction on va l'appelerFetchContent on va lui mettre un paramètre qui va être une chaîne de caractère donc là je mets toutsimplement une indication de type on va en effet essayer dans ce projet d'avoir un script le plus
00:03:58 :propre possible donc je mets également ici une annotation de type pour indiquer qu'on va retourneren retour une chaîne de caractère et pour l'instant donc je vais enlever cette URL ici et je vais lapasser dans l'appel de la fonction donc je vais mettre URL égale à URL et on va remettre l'URL
00:04:13 :ici au début et ce que je vais faire ici au lieu d'un print c'est tout simplement retournerresponse.txt là encore on verra par la suite comment on peut avoir un script un peu plus
00:04:22 :robuste en cas d'erreur avec cette requête mais voilà pour l'instant on a déjà quelque chosequi est un peu plus clair et qui est mieux organisé pour la suite de notre script. Je
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.