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 aller un peu plus loin et je vais vous montrer d'autres façonsd'interagir avec les pages qu'on va scraper. Je vous conseille vraiment d'aller voir la
00:00:08 :documentation de Playwright, elle est très bien faite. Donc vous avez la référence de l'API encliquant ici avec toutes les classes que vous pouvez utiliser qui sont bien définies avec descommentaires à chaque fois qui expliquent tout ce qui se passe et vous avez également ladocumentation qui explique comment installer Playwright, comment également faire des tests
00:00:24 :parce que Playwright est au départ un outil pour tester des sites web plus que pour faire duscrapping même si on peut l'utiliser pour les deux. Et faites bien attention quand vous allez
00:00:32 :dans la documentation, vous pouvez l'afficher en différents langages. Donc on a Python ici enpremier mais je crois que ça arrive assez souvent que par défaut il affiche Node.js surtout si vous
00:00:41 :cherchez à partir de Google en fait souvent vous allez avoir les réponses à votre question maispas forcément dans le langage que vous souhaitez. Donc n'hésitez pas si vous êtes avec Node.js ici
00:00:50 :de revenir sur Python. Les pages ne sont pas tout le temps disponibles dans les deux langagespuisqu'il y a quand même un petit peu de différence entre l'un et l'autre. Donc il
00:00:57 :arrive quand vous êtes sur une page précise que vous changiez de librairie en allant de Pythonà Node.js et que vous tombiez des fois sur une page 404 puisque il n'y a pas une concordance
00:01:06 :100% exacte entre les deux. Mais voilà n'hésitez pas à regarder tout ça et à changer le langageici pour être sûr d'être avec Python. Donc dans cette partie qu'est ce qu'on va regarder ? On va
00:01:15 :regarder les locators. Donc je vais vous montrer ici dans la documentation, je vais grossir unpetit peu. Vous allez voir qu'on a plein de façons de récupérer des éléments sur la page. On a des
00:01:24 :façons un peu plus avancées et très précises qu'on utilise généralement dans d'autres bibliothèquescomme le CSS et le XPath. Donc vous voyez ici on peut indiquer avec CSS égale ou avec XPath égal
00:01:34 :qu'on souhaite utiliser ces façons de faire. Et on a cette méthode donc locator qui nous permet decréer un locator. Donc le locator c'est quelque chose qui va localiser comme son nom l'indique
00:01:44 :quelque chose sur la page et ensuite une fois qu'on l'a récupéré on peut effectuer des actions dessuscomme par exemple cliquer sur un bouton ou on peut également faire d'autres actions comme remplirun locator avec des informations. Ça c'est notamment valide pour tout ce qui est boîte de texte donc
00:01:59 :toutes les balises HTML dans lesquelles on peut rentrer des informations. Vous voyez qu'à chaquefois vous avez le code également sync et async. La seule différence entre les deux la plupart du
00:02:08 :temps étant que vous devez attendre avec le mot clé await quand vous faites une opérationasynchrone. Mais comme je vous dis voilà nous on va rester sur du sync ça fait quelques quelques
00:02:17 :lettres en moins à écrire et pour toutes ces parties ça ne change absolument rien. Vous voyezque le reste du code est absolument identique. Donc les locators ce qui est intéressant c'est
00:02:25 :qu'on a beaucoup de fonctions par défaut qui nous sont données qui sont des fonctions. Doncces fonctions ici getByRole qu'on a vu qui permet de récupérer un élément en fonction de son rôlesur la page. On a getByText, getByLabel, getByTestID aussi. Donc testID c'est un attribut qui est sur
00:02:43 :les balises HTML qui est généralement utilisé pour faire des tests justement. Donc c'est unattribut qu'on met pour pouvoir cibler très précisément les éléments et vous allez voirque c'est très pratique parce que souvent les plateformes l'utilisent et on va pouvoir aussil'utiliser du coup non pas de notre côté pour faire des tests mais pour faire du scrapping.
00:03:00 :Si on va voir la documentation vous allez avoir des exemples très précis avec le code à chaquefois et les différents éléments avec des petits navigateurs ici très pratiques sur lesquels onpeut interagir. Donc comme je vous dis la documentation est un très bon point d'entrée
00:03:13 :pour commencer à voir ce que vous pouvez faire avec ces différentes méthodes. Donc nous on varevenir dans notre projet et je vais vous montrer celles que j'utilise le plus souvent et commentles utiliser dans le cas de cette page pour récupérer les informations qui nous intéressent.
00:03:25 :Donc comme on l'a vu pour récupérer ce bouton on peut utiliser le getByRole. getByRole ça vapermettre d'aller récupérer un élément en fonction de son rôle sur la page. Vous pouvez
00:03:34 :retrouver ces éléments en allant de la documentation de Playwright cette fois-ci nonpas dans la documentation qu'on était en train de regarder donc la documentation des locatorsmais en allant dans l'API directement. Donc si vous allez dans l'API dans locator vous allez
00:03:46 :trouver la méthode getByRole et vous allez avoir un peu plus d'informations sur ce que vous pouvezutiliser. Donc dans les arguments ici on a le premier élément le premier argument qu'on peut
00:03:55 :envoyer en fait qui est l'argument du rôle et là vous voyez tout ce qu'on peut utiliser. Donc onva retrouver le bouton et on a pas mal d'autres choses. On a par exemple les toolTips, les toolBars,
00:04:04 :on a les textboxes, on a les formes, les comboboxes, les alertes, les blocodes donc on a vraimentbeaucoup de choses ici qu'on peut récupérer à travers ce getByRole. Comme on l'a vu également
00:04:14 :on peut utiliser donc des sélecteurs CSS donc ça c'est quelque chose avec lequel on estgénéralement plus familier quand on utilise des bibliothèques comme Beautiful Soup. Alors pour
00:04:23 :le CSS on va devoir spécifier dans la chaîne de caractère ici CSS égale et ensuite on vamettre notre sélecteur CSS. Donc dans ce cas-ci on a différentes choses qu'on peut utiliser si je
00:04:32 :fais un clic droit et que je fais un inspect sur ce bouton on voit que le bouton il a un IDgetSecretBooks donc pour ça je pourrais faire un dièse getSecretBooks et on va voir si je metsmon point de debug ici et que je lance le script en debug si on a bien récupéré le bouton qui
00:04:46 :nous intéresse. Donc je lance le debug là comme je vous dis on a le navigateur qui semble se fermermais en fait c'est juste qu'il est caché par PyCharm qui se remet devant donc je peux le mettre decôté ici mettre ma fenêtre avec le chromium qui a été ouvert à droite et là on voit qu'on a bien
00:05:01 :récupéré un bouton donc on voit qu'on a un élément dedans dans cette variable et je peux tester cetélément donc je vais décaler encore un petit peu pour qu'on voit bien ici. On peut tester ensuite
00:05:10 :dans cette boîte pour évaluer notre expression, on peut tester en faisant un bouton.clic pour testernotre clic et voir si ça fonctionne. Donc j'appuie sur entrée et là on voit que le clic fonctionne
00:05:19 :et qu'on a bien donc récupéré le bouton sur lequel on voulait cliquer. Donc ça c'est une premièrefaçon de faire. Une autre façon de faire c'est d'utiliser les hexpaths. Donc les hexpaths c'est
00:05:28 :un truc un peu plus précis même très précis on va pouvoir le découvrir également en inspectantavec un clic droit le bouton et là je vais faire un clic droit sur cet élément dans le html qui vaêtre affiché, clic droit et là on va pouvoir copier le hexpath. Donc on a un hexpath relative ou un
00:05:44 :hexpath complet à partir de la racine de notre html donc le hexpath complet ça va être assezlong vous allez voir si je le mets ici. Dans ce cas-ci en fait c'est assez court mais dans des
00:05:54 :sites beaucoup plus complexes vous allez voir que vous allez vous retrouver avec des chaînescaractères très longues parce que là vous voyez avec le hexpath complet on part du html on vaensuite sur le body et ensuite on va récupérer le bouton. Donc là pour indiquer que c'est un
00:06:08 :hexpath je dois mettre hexpath égal et rajouter un slash au début. Je vais relancer en modedebug pour voir si ça fonctionne de nouveau. Donc là on a bien notre bouton je vais remettre de
00:06:18 :l'avant mon navigateur ici je vais le mettre sur le côté et là on va refaire un bouton pour unclic et vous allez voir que ça fonctionne de la même façon. Donc une autre façon de récupérer
00:06:26 :les éléments de façon très précise ici avec le hexpath mais c'est généralement pas quelque choseque je conseille parce qu'il suffit qu'il y ait une seule chose qui change. Bon là bien sûr c'est
00:06:34 :juste html et body donc ça risque pas vraiment de changer mais quand on a des éléments qui sontvraiment imbriqués très loin dans le DOM ça va être très long ici et ça risque si vous partezvraiment du début si vous partez du html body donc avec un chemin complet de hexpath c'est très
00:06:49 :très probable que le document object model donc le code html change et que le hexpath ne fonctionneplus assez rapidement. Donc je vous conseille de cibler plus facilement avec le ID par exemple
00:07:01 :comme on l'a fait avec le CSS le ID ça risque beaucoup moins de changer donc je vous conseillede passer par ça. Une erreur que je vois aussi beaucoup c'est les gens qui pensent en fait que
00:07:10 :playwright est un outil qui va nous permettre directement de faire du scrapping alors neconfondez pas playwright avec beautiful soup on peut récupérer bien entendu des informationsavec playwright donc si par exemple je veux récupérer le titre des livres ici si je faisun clic inspect sur super livre on voit que c'est un h2 donc je pourrais très bien ici faire un
00:07:30 :locator faire css égale h2 et là si je relance le script donc on va arriver jusqu'ici bouton etlà si je fais un bouton .txt content je peux récupérer le contenu qui est à l'intérieur donc
00:07:42 :là dans ce cas ci ça va être livre 1 puisque livre 1 ici est un h2 et si je vais voir sur lesautres ça doit être oui c'est aussi des h2 donc je les ai tous mis en h2 on a le h1 ici qui est lewhole books donc on peut très bien faire ça utiliser playwright pour récupérer des informations mais
00:07:56 :ça ne va pas être la façon la plus optimale de faire c'est beaucoup mieux en fait si voussouhaitez récupérer des informations d'utiliser un outil qui va analyser l'entièreté du votredocument object model donc un outil comme beautiful soup et on va pouvoir à partir de lapage à partir de page point content récupérer l'entièreté du html pour l'analyser donc je
00:08:15 :vais vous montrer ici j'arrête le script je vais faire from bscat import beautiful soup doncinstallez le avant avec pip si vous souhaitez l'utiliser pour faire comme moi donc là qu'estce que je vais faire je vais dire html égal à page content donc on va récupérer l'entièreté du
00:08:28 :contenu et je vais la passer à beautiful soup donc avec beautiful soup html et on va donner le htmlpoint parser ici et là si je fais un print de soup point prettify on va retrouver l'entièreté denotre de notre html dans la console donc si j'enlève le point de débug et que je relance le script là
00:08:45 :on ouvre le document et on se retrouve bien avec l'intégralité de mon html donc à partir de çapar la suite je peux aller chercher des éléments donc je peux faire un print de soup point selectet on va récupérer tous les éléments qui sont des h2 et à la place d'un print je peux faire
00:08:59 :une book donc je peux dire pour titre in tout ça on va faire un print de titre point texte et làsi je lance vous allez voir qu'on récupère bien le livre 1 donc seulement le livre 1 parce qu'onn'a pas cliqué sur le bouton donc là vous allez voir à quel point on peut maintenant mettre tout
00:09:13 :ça en pratique pour faire une action et ensuite récupérer les éléments donc là avant le htmlpoint page content ce que je vais faire c'est que je vais faire cette action qu'on avait faite doncl'action de récupérer le bouton donc là je vais réutiliser en fait le id que j'avais donc je me
00:09:27 :souviens plus c'était get secret books donc je vais refaire mon locator avec le css qui est égalà dièse get secret book et on va faire un clic sur le bouton et ensuite après ça je vais faireun petit wait for timeout pour que ça n'aille pas trop vite pour que vous puissiez bien voir ce
00:09:43 :qui se passe après ça donc une fois qu'on a cliqué sur le bouton là je vais récupérer le contenu dela page donc une fois qu'on a cliqué sur le bouton pour avoir les deux autres livres qui sont dans lehtml et à partir de ça on va analyser le html avec beautiful soup et ensuite récupérer les
00:09:56 :titres donc je relance on a le navigateur qui s'ouvre le bouton qui est cliqué et là vousvoyez qu'on arrive bien à récupérer toutes les informations après le clic et pour terminer làdessus et vous montrer si je mets le headless en dessous on va avoir ainsi un script qui permet
00:10:11 :d'effectuer une action sur la page et de récupérer les éléments après avoir effectué cette action ettout ça sans avoir besoin d'ouvrir de navigateur vous voyez là on a l'impression que j'ai faitexactement comme je le ferai avec request juste une requête alors qu'en fait il ya beaucoup de
00:10:23 :choses qui se passent en arrière plan on ouvre le navigateur on clique sur le bouton on attend unpetit peu on récupère le contenu du html et ensuite on extrait les informations avec beautifulsoup donc vous commencez j'espère avoir la puissance de cette bibliothèque et la facilitéd'utilisation également de celle-ci c'est vraiment un sujet infini on pourrait faire une formation
00:10:43 :complète de plusieurs heures juste sur playwright pour l'instant ce que je vous conseille c'estvraiment d'aller éplucher la documentation pour voir toutes les façons de faire d'utiliserégalement le débuggeur pour explorer comment vous pouvez naviguer sur des sites donc n'hésitezpas à ouvrir des sites un peu plus complexe et d'analyser avec le locator ou avec le bouton
00:11:00 :record pour voir toutes les actions que vous pouvez faire en fonction des éléments sur votre pagepour naviguer exactement où vous le souhaitez et ensuite utiliser donc des bibliothèques commebeautiful soup pour une fois que vous êtes arrivé à l'endroit où vous voulez avec les informationsque vous voulez faire du scrapping de façon plus efficace avec un outil qui est fait pour ça comme
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.