Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte00:00:00 :Dans cette partie, on va améliorer notre script en faisant exactement les étapes que l'on feraitsi on était un humain. Puisque pour l'instant, qu'est-ce qu'on fait ? Eh bien, on se rend
00:00:08 :directement sur une URL très spécifique qui est longue comme le bras et qui est d'ailleursbeaucoup trop longue pour mon IDE. Et ce qu'on va faire, c'est vouloir partir directement depuis
00:00:18 :la page principale de Airbnb et faire exactement les mêmes étapes que celles qu'on ferait si oncherchait une location. Pour faire ça, on va utiliser le débuggeur de Playwright que je
00:00:27 :peux avoir en revenant sur ma configuration script debug. Donc rappelez-vous, c'est cetteconfiguration qui contient la variable d'environnement pwdbug qui est égale à 1. Puisque
00:00:36 :je vais pouvoir faire ces opérations directement dans le navigateur qui va être ouvert et voirensuite le code que j'ai besoin d'utiliser pour me rendre jusqu'à la page qui m'intéresse. Donc
00:00:46 :pour l'URL, je vais prendre tout ce qui se trouve après le slash ici et juste garder l'URL de basede Airbnb. Et pour ne pas également trop polluer le script de debug, je vais commenter cette ligne
00:00:57 :ici puisque vous allez voir que si je le lance, je vais vous montrer ce que ça donne. Donc là onva encore être sans Bright Data avec le headless qui va être égal à false puisqu'on veut voirle navigateur. Donc je vais lancer mon script de debug et vous allez voir ce que ça donne si je
00:01:09 :laisse en fait l'interception des routes. C'est qu'à chaque fois que je vais faire une opérationici, vous voyez qu'on a tout le détail des opérations, donc des requêtes qui sont effectuéeset qui sont affichées. Donc ça va grandement polluer ici l'output du script et moi ça ne
00:01:22 :m'intéresse pas et dans ce cas-ci je veux vraiment avoir les images pour voir concrètement ce que jefais. Donc je vais stopper mon script ici et on va commenter cette ligne, donc la ligne qui
00:01:31 :intercepte la route et qui appelle cette fonction. Donc là si je relance le script, vous allez voirque c'est beaucoup plus clair, je peux continuer avec le step over ici et là on aura juste uneindication ici de qu'est ce qu'on va faire et on pourra y voir beaucoup plus clair. Donc là je
00:01:46 :vais me mettre en mode record et je vais effectuer les actions que je ferai comme si j'étais un humain,donc vraiment je clique là par exemple sur continuer sans accepter. Là on a explorer les
00:01:55 :logements, donc je peux soit choisir de cliquer sur la croix, soit cliquer sur ce bouton, je vaiscliquer sur explorer les logements, voilà. Et ensuite moi ce qui va m'intéresser c'est de
00:02:03 :chercher une destination. Alors faites bien attention quand même à chaque fois que vouscliquez sur quelque chose, là vous voyez que je peux cliquer sur cette boîte ici qui a un testID, QA, explore header ou sinon j'ai la destination directement qui a elle aussi un test ID. Donc on
00:02:18 :voit que le code qui m'est proposé c'est getByTestID. Les test ID, je vous en avais déjà parlé, c'estassez intéressant puisque c'est des données qui généralement ne changent pas puisque c'est desdonnées qui sont utilisées par Airbnb eux-mêmes pour tester leur script, pour faire des testsd'automatisation et donc on est assez sûr que ces données ne vont pas bouger puisque sinon ça
00:02:37 :casserait tout leur script d'automatisation contrairement à des classes où là ça peutêtre un petit peu différent des classes ou des ID en fonction de ce qu'on utilise pour faire lefront-end, ça peut changer assez régulièrement. Donc là moi je vais cliquer ici au plus proche
00:02:49 :de ce que je souhaite donc sur le test ID ici structured search input field query et on varentrer le nom de ce qu'on souhaite chercher donc je vais mettre Rio de Janeiro de nouveau et là dela même façon vous voyez on peut cliquer un peu plus en haut donc on a l'option 0 locateur div et
00:03:06 :nth1 donc ça ça veut dire que ça va prendre le premier élément si je vais là on va avoir leoption 0 avec le get by text donc là encore c'est peut-être un peu trop précis puisque le texte vaprobablement changer en fonction de la destination donc je vais essayer de voir si je peux pas avoir
00:03:22 :un truc un peu plus générique et là effectivement j'ai quelque chose qui me plaît bien le test IDqui est tout simplement option 0 si je vais là je vais avoir option-1 option-2 etc donc çaça me plaît bien le test ID option 0 c'est très générique et je vais pouvoir l'utiliser peu
00:03:36 :importe la destination que j'ai donc je clique là dessus ensuite on me demande quand est-ce queje souhaite arriver dans mon cas je vais vouloir chercher sur un mois donc je vais cliquer surmois ici et là encore on a différentes options donc je vais pouvoir cliquer par exemple sur les
00:03:50 :petits points donc là on voit qu'on a un span avec là encore le nth qui veut dire qu'il va allerchercher un énième élément donc là si on clique là dessus on va aller sur le mois par exemple 11moi ce qui va m'intéresser c'est juste un mois je veux pas rester plus longtemps donc là on voit
00:04:04 :qu'on a un voilà on a alors pour le voilà donc là ça a changé on est sur un get by label si jeclique là on est avec le 6 le 7 le 8 si je clique sur celui là que je reviens là alors là on a unlocator avec un nom de classe qui est très spécifique qui semble être le nom de classe
00:04:20 :pour le premier mois et les autres après on va y aller avec un nth donc moi comme c'est juste unmois qui m'intéresse je clique ici et ça devrait suffire et là vous voyez que tout ce qu'on faitc'est reporté ici en passant on a donc tous les différents tests qu'on a fait donc il va falloir
00:04:34 :faire le tri un petit peu là dedans après puisque là on voit qu'on a le clic sur le mois 11 sur lemois 6 etc avec le nth child 6 qui était je crois le deuxième mois voilà donc nous après il faudrafaire un petit peu le tri là dedans et tester notre script bien entendu donc dernière étape
00:04:49 :ici je vais cliquer sur le nombre de voyageurs et je vais choisir d'ajouter un voyageur donc làj'ai cliqué sur la boîte qui est un test ID encore et là de nouveau on a un test ID qui me plaît biendonc avec un stepper adult increase button là encore c'est assez spécifique donc je dis que je
00:05:03 :suis tout seul et je finis avec là encore un autre test ID pour lancer la recherche donc ça mesemble pas mal et là on a toutes les étapes qui sont affichées ici de ce qu'on vient de faire eton va pouvoir faire le tri à l'intérieur de tout ça pour faire tout ça de nouveau avec notre script
00:05:17 :donc je vais agrandir un petit peu la fenêtre ici et je vais sélectionner tout ça ici et faireun copier de ce texte je vais arrêter mon script et on va aller le copier directement à l'endroitoù on avait le script qui faisait tout simplement passer d'une page à l'autre donc je vais enlever
00:05:33 :tout ça ici on a bien remis ici le bouton continuer sans accepter sur lequel on cliquepour enlever le bandeau des cookies et ensuite là on a pas mal de petites choses alors on a leclic sur le search input ensuite on a le fill donc là je vais mettre Rio de Janeiro au complet le
00:05:49 :clic sur la première option le clic sur l'onglet avec le choix des dates donc moi dans ce cas cij'avais choisi une date d'un mois et si je me souviens bien on avait ici la classe spécifiquetrès spécifique qui correspondait au premier mois donc on va enlever ici le span and child celui là
00:06:06 :et celui là aussi et on va garder uniquement le clic pour spécifier qu'on souhaite rester uniquementun mois dans les endroits donc on prend le premier et on clique dessus et ensuite on clique donc surle search input avec les guests donc le nombre d'invités qu'on souhaite avoir donc là dans ce
00:06:21 :cas ci je n'avais mis qu'une seule personne et ensuite le clic sur le search button qui permetde lancer la recherche donc normalement c'est tout bon je vais mettre un point de debug à la fin surle browser close ici et on va relancer le script mais cette fois ci sans le debug donc on va faire
00:06:35 :script without debug et je vais le relancer en mode debug pour m'arrêter sur le point de debugici mais sans ouvrir le debug de playwright donc il y a plein de debug dans tous les sens désoléc'est peut-être un petit peu confus mais c'est bien donc le script sans debug de playwright que
00:06:48 :je lance en mode debug de PyCharm donc on va voir ce que ça donne on a bien le clic sur les deuxboutons le clic ensuite et tout semble assez bon tout est très rapide et là on voit qu'on estbien donc sur la page de Rio de Janeiro du 1er février au 1er mars pour un voyageur et on a
00:07:04 :la liste de tous les logements ici donc ça semble bien fonctionner je vais arrêter mon script iciet enlever le point de debug et je vais juste récupérer ici le html donc je vais faire unevariable html content qui va être égale à page.content qui est le contenu de la page et je vais
00:07:20 :tout simplement faire un beautiful soup donc je crois que je l'avais déjà importé alors non pasdans ce script donc on va faire from bs4 enfin bs5 import beautiful soup et ça c'est juste pourfaire un petit prettify pour voir ce que ça nous donne donc je vais faire un beautiful soup avec
00:07:35 :le html content donc html content comme ça on va mettre le html parser et on va faire un printde soup.pretify ce qui va me permettre d'avoir le code html affiché d'une façon un peu plus
00:07:47 :sympathique avec ce prettify ici qui va garder les tabulations les retours à la ligne etc donc jerelance tout ça on va mettre le headless en true cette fois ci toujours sans bright data pour lemoment puisque on est juste sur notre ordi pour faire des tests et je relance tout ça sans le
00:08:01 :debug donc on a la connexion et ensuite on attend un petit peu et voilà on a bien tout le code htmlici de la page qui est affiché donc tout fonctionne correctement on a bien la navigation jusqu'à lapage qui nous intéresse avec dans ce cas ci Rio de Janeiro et on va voir par la suite comment on
00:08:17 :peut améliorer un petit peu notre script pour séparer tout ce qui est ici puisque là on faitun peu tout dans la même fonction donc on verra par la suite comment on peut améliorer ce scriptet permettre également de chercher différents endroits là on a mis Rio de Janeiro directement
00:08:30 :ici dans le script bien sûr on va vouloir améliorer notre script pour pouvoir passer une villedifférente à chaque fois en fonction de paramètres qu'on va mettre ailleurs quedirectement dans le script donc par exemple qu'on pourra envoyer en ligne de commandequand on lance notre script dans le terminal
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.