Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte00:00:00 :On touche le but désormais avec notre script qui va pouvoir passer à travers les mois de l'année.Maintenant ce qu'il manque c'est de récupérer les données, ça on l'avait fait dans notre scriptbasic. Donc si je reviens dans le main.py ici, on avait bien la fonction ici qui était getAveragePrice
00:00:14 :qu'on va pouvoir copier puisque le code HTML lui n'a pas changé. C'est juste la façon de faire,là on utilisait request, maintenant on va utiliser playwrite. Donc là je vais mettre tout ça dans
00:00:24 :un module, je vais créer un nouveau fichier Python et je vais l'appeler price.py tout simplement,et je vais mettre à l'intérieur cette fameuse fonction getAveragePrice et on va réimporter leslibrairies nécessaires. Donc on va faire from bs4 import beautiful soup et le logger pour l'instant
00:00:41 :on va l'enlever, on verra par la suite si on le rajoute. Pour l'instant je vais simplifier toutça et je vais juste réimporter également le module re donc le module de regex ici en haut de monscript. Donc cette fonction va pouvoir l'utiliser, normalement comme je vous dis rien n'a changé,
00:00:55 :on va lui passer du html et on va récupérer la moyenne des prix et on va revenir de notre scriptprincipal pour importer cette fonction. Donc là encore je vais le faire tout en haut ici,
00:01:04 :on va les mettre après les imports de la librairie standard et des librairies tierces comme playwriteici. Donc on va faire from price import getAveragePrice et on va utiliser cette fonction pour
00:01:16 :récupérer le prix à partir du code HTML. Ce qu'il me reste à faire ici c'est de décommenter toutesles lignes que j'avais ici, là on va vraiment repartir depuis la page d'accueil donc je vaisenlever cette url qu'on avait utilisé pour nos tests, on va vraiment faire le test au complet
00:01:30 :en partant de la page d'accueil pour naviguer jusqu'à la page avec Rio de Janeiro. On va enprofiter également pour modifier cette valeur qui est directement mise dans le script ici pour lapasser à la place à notre fonction. Donc on va la passer en deuxième ici, on va mettre city par
00:01:45 :exemple et on va indiquer ici qu'il s'agit d'une string, on va également rajouter les élémentsici de typage donc le booléen ici et le booléen également pour le headless, je fais un petitcommande option L pour formater tout ça automatiquement et le city ici bien on va lemettre à la place du Rio de Janeiro, je vais le mettre dans le fil et on va le passer ici en bas
00:02:05 :de notre script et par la suite on va voir qu'on pourra le passer en ligne de commande comme onl'avait fait avec le module 6 si on le souhaite. Donc là je vais mettre city égal et pour varier
00:02:15 :on va mettre Paris, on va revenir du Brésil et changer la ville pour voir si tout fonctionneégalement avec une autre ville, ça ne fera pas de mal. Donc là normalement tout est bon, il reste
00:02:23 :plus qu'à récupérer le contenu du code HTML pour pouvoir analyser le prix. Donc ça je vais le faireau début de ma boucle ici puisque là on va faire la recherche. Donc ici je vais faire getAveragePrice
00:02:35 :avec HTML qui va être égal à page.content et on va récupérer ça dans une variable qu'onva appeler AveragePrice et je vais faire un print pour afficher la valeur donc on va direAveragePrice for date et là on va mettre la date alors je vais peut-être le bouger un petit peu
00:02:52 :plus loin, on va le mettre juste après le calcul de la date ici pour qu'on ait accès à cette date.Donc for date ici is et on va insérer le AveragePrice pour l'afficher. Donc je refais un petit reformat
00:03:05 :pour tout remettre comme il faut et bien on va tester comme ça. Normalement ça devrait être toutbon, on continue avec le headless, on va le mettre à true pour voir, on va juste lancer le scriptsans debug directement et voir si on a bien tout ce qui nous intéresse ici. Alors si ça marche du
00:03:22 :premier coup je suis chanceux, alors là on a un 0 ça commence bien donc là ça ne semble pasfonctionner donc j'ai dû faire une erreur quelque part. Donc on va refaire un petit debug pour
00:03:31 :vérifier qu'on a bien tout ce qu'il faut, je vais mettre le headless à false et on va remettre iciun point. Ah oui alors est-ce que c'est parce que non là on fait un page ok donc je vais page
00:03:43 :content ok non ça devrait être bon. Je vais mettre un point, je vais mettre ça dans unevariable déjà pour qu'on puisse l'isoler donc je vais faire un clic droit on peut faire un refactorici et un extract introduce variable pardon et on va mettre html content comme ceci et
00:04:00 :automatiquement vous voyez qu'il a déplacé le contenu que j'avais sélectionné dans une variableet il a tout remplacé comme il faut. Donc je vais mettre un petit point de debug ici pour voir si
00:04:07 :on a bien ce qu'il nous faut dans le html, je relance en mode debug donc on continue, on explore,on arrive à Paris, là on arrive à ce point ici et on a bien notre page qui s'affiche. Alors je
00:04:18 :pense que ça doit être encore une fois juste une question de temps d'affichage puisque quand on vasur Airbnb ça prend un petit peu de temps avant d'afficher toutes les annonces donc je pense queça doit être ça. Je vais continuer voir si on récupère quelque chose dans average price donc
00:04:31 :là on est toujours à zéro alors c'est peut-être un problème ici directement dans le script donc jevais peut-être devoir analyser ce script ici il y a peut-être une erreur donc on va aller voir lehtml content déjà voir à quoi ça ressemble et vérifier si on a bien les fameuses classes qu'on
00:04:48 :va chercher donc par exemple le card container donc je vais vérifier ici avec un ctrl f eteffectivement il semble qu'on n'ait pas le card container ici alors je vais aller voir dans lesous location si je fais un clic droit inspect et que je vais voir directement ici est-ce qu'on a
00:05:04 :le card container alors on l'a bien data test ID donc là il doit y avoir un problème quelque partdonc ce que je vais faire c'est tout simplement encore un petit peu de debug on va remettre unpoint de debug ici directement pour voir si on arrive bien récupérer les divs je l'enlève d'ici
00:05:20 :et je vais juste relancer le script avec le debug à ce niveau donc directement dans la fonction donclà on va bien récupérer les éléments voilà et je pense alors en fait oui en fait je pense je vaismettre avant je viens d'avoir de me dire que là on récupère le html content directement alors ce
00:05:37 :que je vais faire c'est avant ici comme je vous disais ça va peut-être un peu vite donc on vafaire un wait for, pas event mais for timeout et on va mettre aller on va être généré on va mettrecinq secondes et on va voir déjà si ça résout le problème donc je vais remettre mon point de
00:05:50 :debug que j'avais pas enlevé donc je vais le laisser juste ici on relance et on va juste luilaisser un petit peu de temps après qu'il charge la page pour voir si ça peut déjà pas être ça leproblème voyez qu'il y a un petit temps d'attente entre le moment où on fait la recherche et le
00:06:04 :moment où on a la page donc je continue et là vous voyez qu'effectivement on a quelque chosedans les divs donc ça semble être bon je vais continuer avec mon point de debug que je vaismettre ici après le average price je fais cette fois ci un resume program je ne veux pas continuer
00:06:18 :pas à pas si je clique ici sur step over ça va faire les lignes une par une moi ce que je veuxjuste c'est continuer le programme et m'arrêter après le average price donc je continue et là ona bien une valeur dans le average price donc c'est bien mon intuition qui se vérifie je vais continuer
00:06:32 :comme ça là on va rattendre cinq secondes de nouveau puisque j'ai toujours mon wait for timeoutet normalement on devrait avoir une autre valeur donc je continue on arrive bien dans la fonctionget average price et on a une autre valeur ici dans average price donc ça fonctionne bien c'était
00:06:48 :juste un problème de chargement donc là on peut faire un wait for timeout si on veut être un peuplus précis on pourrait peut-être vérifier ici faire une boucle while qui vérifie là je saispas combien on a d'éléments je pense que sur cette page on en a toujours le même nombre donc
00:07:04 :on a une grille avec trois par peut-être cinq ou six donc ça fait 18 éléments si mes maths sontbons donc ce qu'on pourrait faire c'est une boucle pour vérifier pour attendre en fait tant qu'on n'apas 18 éléments avec la classe cart container par exemple ça pourrait être une façon de faire
00:07:20 :pour être sûr d'attendre uniquement le temps dont on a besoin dans ce cas-ci je pense qu'onpourrait juste laisser une valeur fixe comme je vous dis on n'est pas forcément très pressé etsi on veut rester éthique et faire quelque chose qui ne va pas surcharger le site c'est de toute
00:07:33 :façon une bonne idée de mettre un petit peu de temps d'attente ici donc là je vais pas mettre5000 je vais essayer de mettre quand même un petit peu moins 2000 on va mettre ça comme çaet je vais relancer le script pour voir si tout fonctionne bien on va se remettre en headless
00:07:45 :à true pour ne pas être importuné par l'ouverture du navigateur et on va voir si on arrive bienrécolter les données de nouveau donc voilà average price on a 1487 1401 donc là ça semble un petitpeu moins cher en avril qu'en mars ça commence à remonter avec l'approche de l'été j'imagine
00:08:05 :avril mai voilà on commence à remonter tout doucement donc ça semble assez logique en juinen juillet on commence à augmenter beaucoup en août j'imagine ça va être encore pire voilà etprobablement qu'en septembre octobre ça va commencer à redescendre et effectivement mesintuitions sont bonnes donc on a forcément c'est assez logique la saison touristique qui batte
00:08:26 :son plein donc là basé sur ces données il semble que le meilleur mois pour partir à paris ce soitle mois de novembre ce qui là encore est assez logique je pense puisque si on regarde donc parrapport aux périodes de vacances je pense donc là on va aller jusqu'à probablement le 3 2025
00:08:46 :peut-être qu'on va s'arrêter là non voilà on s'est arrêté là puisqu'on fait 12 mois donc là on ala boucle qui est bouclée on avait bien 12 mois donc 12 itérations dans notre boucle donc on a lemois prochain donc en mars on est pas mal élevé après bien sûr avec l'été ça explose et ensuite
00:09:01 :en novembre il n'y a pas grand chose qui se passe pour le 1er décembre donc le mois de décembre jepense qu'avec les fêtes de fin d'année pareil pour janvier ça remonte un petit peu par contreen octobre et en novembre vous voyez il n'y a pas grand chose qui se passe donc selon cette étude
00:09:14 :je pense que le mois de l'année le mieux enfin tout cas le mieux le moins cher on va dire pasforcément le mieux mais celui qui fera le moins de mal à votre portefeuille c'est le mois denovembre et on peut répéter ça avec d'autres villes donc là on peut le modifier directement
00:09:26 :ici on pourrait mettre par exemple porto la ville où j'habite pour vérifier ce que ça donne je vaisrelancer le script et je pense en tout cas j'espère que les prix seront un peu moins cher quoique làil faut savoir aussi qu'on n'a mis aucune option de filtre donc on a des gammes de prix qui sont je
00:09:42 :pense en fait assez similaires c'est peut-être voulu de la part de airbnb de toujours être unpetit peu dans les mêmes zones de prix probablement en fonction du pays d'origine peut-être là on voitqu'on est quand même dans des fourchettes assez proches c'est quand même un petit peu moins
00:09:53 :cher que paris mais c'est quand même assez élevé et bien sûr donc là avec tout ce que vous avez vudans les parties de cette formation vous voyez que c'est maintenant très facile de pouvoir faire lamême chose pour modifier les filtres si on le souhaite pour remettre des limites de prix par
00:10:08 :exemple ou pour cibler certains types de biens et bien il suffit d'utiliser par exemple l'outilde débug de playwright qu'on a vu qui va permettre d'inspecter les différents éléments de la pagepour pouvoir cliquer sur les bons éléments et rajouter les options de filtre que l'on souhaitedonc voilà pour cette partie tout fonctionne bien on peut changer notre ville ici on peut changer
00:10:25 :notre ville directement ici on peut choisir de le faire avec bright data également pour terminercette partie je vais vérifier avec bright data que ça fonctionne bien également le headless je vaisle mettre en false et je vais relancer ma requête donc script without debug ça devrait ouvrir la
00:10:40 :vue de debug de bright data et on va voir si ça fonctionne également avec le scrapping browserde bright data mais il n'y a pas de raison que ça ne fonctionne pas puisque là encore le site n'apas changé donc on va se rendre sur les mêmes pages html on va cliquer sur les boutons voilà
00:10:56 :donc le bouton pour les cookies le bouton pour explorer les logements donc comme vous voyez c'estun petit peu plus long mais ça fonctionne bien on va se rendre dans la destination et on va continuercomme ça voilà avec les dates etc etc donc je vais pas aller plus loin ça semble fonctionner
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.