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 utiliser PlayWrite pour afficher notre page et par la suite récupérerles données qu'elles contiennent, en naviguant de façon plus naturelle à l'intérieur dusite grâce à toutes les fonctionnalités de la bibliothèque PlayWrite, qui est normalementutilisée pour faire des tests, c'est-à-dire vérifier que notre code fonctionne bien,
00:00:17 :notamment avec des tests qu'on appelle end-to-end, c'est-à-dire des tests qui vont vérifierune suite d'actions et non pas une seule action précise comme pourrait le faire un test unitaireen vérifiant directement notre code. Donc ce que ça nous apporte comme intérêt, c'est qu'on va
00:00:30 :pouvoir vraiment naviguer sur les pages comme on le ferait à la main, mais quand même avec du codeque l'on va écrire dans cette partie et les parties qui vont suivre. Donc la première chose que je
00:00:39 :vais faire, c'est importer PlayWrite. Dans ce cas-ci, on va utiliser l'API Sync, puisqu'on adeux API, on a l'API Async et l'API Sync. Donc la différence entre les deux, c'est que la librairie
00:00:49 :Async va nous permettre de faire des requêtes asynchrone, ça nous permettrait par exemple defaire plusieurs requêtes en même temps sans attendre qu'une requête se termine pour lancerune autre. Dans le cas de ce script, pour garder ça simple et éviter d'avoir beaucoup plus de codes
00:01:03 :avec les await notamment qui sont nécessaires dans un code Async, eh bien on va utiliser lalibrairie Sync, donc la librairie synchrone, et ça va nous permettre aussi de garder quelque chosed'éthique puisque comme on l'a vu dans les parties précédentes, on souhaite également ne passurcharger le site de requêtes, ce qui pourrait être le cas avec des requêtes asynchrone puisqu'on
00:01:22 :pourrait envoyer plusieurs requêtes en même temps. Dans notre cas, on veut récupérer seulementquelques informations sur le site et on n'a donc pas besoin d'avoir quelque chose de très trèsperformant avec plusieurs requêtes qui pourraient surcharger le site. Donc je vais importer cette
00:01:35 :librairie à partir de PlayWrite, donc from PlayWrite.SyncAPI, on va importer SyncPlayWrite.On va ensuite faire une fonction qui va être la fonction principale que je vais appeler run etje vais lui passer pw qui va être un paramètre qui va recevoir une instance de PlayWrite, onverra par la suite comment la passer à cette fonction et pour l'instant je vais juste mettre
00:01:54 :un pass à l'intérieur. On va refaire notre structure main, donc la fameuse ifname égale main,et à l'intérieur de cette structure on va lancer la fonction run avec un contexte manager. Donc on
00:02:05 :va dire avec SyncPlayWrite qu'on va récupérer dans une variable qu'on va appeler PlayWrite,on va lancer notre fonction. Donc là on crée ici, alors je vais refaire mon indentation,
00:02:15 :là il y a eu un petit souci apparemment, voilà. Donc avec cette instance qu'on va récupérer dansPlayWrite, on va lancer cette fonction que l'on va finaliser tout de suite, on va lui passerdonc pw cette instance de PlayWrite et à partir de ça on va pouvoir créer notamment un navigateur
00:02:30 :qu'on va pouvoir afficher que ce soit en headless ou non, donc headless comme ceci, qui veut direqu'on souhaite afficher ou non le navigateur. Donc nous dans notre cas au début on va vouloir
00:02:39 :l'afficher pour voir un petit peu ce qui se passe et par la suite on verra qu'on pourra le lancersans afficher le navigateur. Donc tout va se faire en arrière-plan sans qu'on ait besoin d'ouvrir
00:02:48 :le navigateur et on va quand même pouvoir récupérer bien entendu les données qui serontdans le code html. Donc ce que je vais faire ici à l'intérieur de cette fonction c'est utiliser
00:02:57 :PlayWrite, donc utiliser cette variable ici pw pour créer un navigateur qui va être un navigateurchromium et que je vais lancer avec la fonction launch. Donc on fait une instance de chromium
00:03:08 :qu'on lance et on peut spécifier ici si on souhaite être en headless ou non. Donc moi je vais lemettre à false puisque comme je vous ai dit dans les premiers tests on va vouloir vérifier que toutse passe bien en affichant le navigateur et je vais récupérer tout ça dans une variable que je
00:03:21 :vais appeler browser. On va faire un petit print ici pour l'instant on va pas encore mettre delogging on pourra le mettre par la suite pour l'instant je vais juste mettre des prints pourvoir un petit peu ce qui se passe. Donc on va dire connecting to scrapping browser et maintenant
00:03:33 :qu'on a notre navigateur on va pouvoir créer une page puisque le navigateur par défaut ne va pasafficher une page donc il faut créer cette page et ensuite dire où est-ce qu'on souhaite naviguersur cette page. Donc je vais faire une variable page qui va être égale à browser.newpage qui
00:03:47 :va nous permettre de créer cette nouvelle page pour ensuite naviguer vers une url. Donc pourl'instant je vais juste faire un goto et on va mettre par exemple google tout simplement pourvérifier que tout fonctionne. Donc le goto ça nous permet de naviguer à une url et d'afficher
00:04:01 :donc cette url et pour finir on va faire un browser.close pour fermer le navigateur. Et c'esttout ce qu'on va faire pour l'instant et on va tester notre script pour vérifier que toutfonctionne. Donc là j'ai différentes façons de lancer ce script je peux cliquer sur la petite
00:04:15 :flèche ici je peux faire un clic droit et créer une nouvelle configuration automatiquement doncen faisant run main.py. Je peux aussi me rendre directement dans le terminal donc à l'intérieur
00:04:23 :de ce dossier j'ai créé un autre dossier scrapping advanced ici à l'intérieur duquel se trouve monfichier main.py et je peux donc faire tout simplement python 3 main.py pour lancer le
00:04:33 :script et voir ce que ça donne. Donc là on voit bien que le navigateur s'ouvre et il se fermeautomatiquement puisqu'on n'a pas mis de point de debug ou quoi que ce soit qui nous permettentd'attendre. Donc ce que je vais faire ici c'est rajouter un petit temps d'attente. Généralement
00:04:46 :dans le scrapping vous allez voir très souvent le time.sleep qui permet d'attendre dansn'importe quel script python un certain nombre de secondes. Avec playwright on a une fonction pour
00:04:54 :ça qui s'appelle wait for timeout. Donc on va attendre un certain nombre de secondes on vaentrer cette valeur en millisecondes donc par exemple si je souhaite attendre cinq secondeson va mettre 5000 ici et là je vais relancer le script cette fois-ci en faisant un clic droitet en créant une nouvelle configuration automatiquement. Donc avec run main ici ça
00:05:11 :va créer une nouvelle configuration et là on voit bien qu'on a le navigateur qui s'ouvre avecgoogle on attend cinq secondes et une fois que les cinq secondes sont écoulées on va fermer lenavigateur avec browser.close. Donc si on va voir cette configuration vous allez voir rien de
00:05:24 :magique ici ce qu'on fait c'est tout simplement ce qu'on avait fait auparavant à savoir utilisernotre python donc le python de l'environnement virtuel pour lancer le script à l'intérieur dece dossier donc le working directory ici. Donc c'est exactement la même chose que j'ai fait ici
00:05:37 :dans le terminal par défaut automatiquement il va sourcer notre environnement virtuel puisqu'onl'a créé avec PyCharm et donc si je fais un which python 3 ici vous allez voir qu'on a bien le mêmepython qui est à l'intérieur de cet environnement virtuel que l'on va utiliser pour lancer notre
00:05:51 :script main.py. Un autre outil qui va nous être très utile pour la suite de cette formation etpour playwright en général c'est l'outil de debug qui nous permet de vérifier les différentesétapes de notre script comme le debug qu'on aurait dans PyCharm mais également d'avoir accès à desoutils très puissants qui vont nous permettre de générer du code playwright automatiquement avec
00:06:11 :les outils de debug que je vais vous montrer tout de suite. Donc pour ça on va définir une variablequi s'appelle pwdebug donc playwright debug comme ceci tout en majuscule qu'on va mettre égale à 1et on va mettre ensuite python3 main.py donc comme on l'a fait pour lancer notre script donc là ce
00:06:26 :qu'on fait c'est que sur la même ligne on définit cette variable d'environnement à 1 et ensuite onlance notre script donc c'est bien important vous pouvez bien entendu mettre cette variable dansvotre configuration si vous souhaitez vous faire une configuration pour le debug on pourra voircomment faire par la suite. Là je vais lancer tout ça sur la même ligne je lance et vous allez voir
00:06:42 :que là on a deux fenêtres qui s'ouvrent cette fois ci donc une fenêtre de debug qui va s'arrêterautomatiquement au premier goto et là on retrouve les outils bien familiers de ceux qui font beaucoupde debug à savoir le stepover qui va nous permettre d'avancer étape par étape mais on a
00:06:56 :aussi d'autres boutons très intéressants comme le bouton record ou ce bouton qui va nous permettrede vérifier les éléments sur la page donc là je vais continuer en avançant d'un pas avec lestepover on va se rendre sur notre page et on a bien la page de google qui s'affiche et là par
00:07:11 :exemple vous allez voir qu'on peut vérifier quel est le bouton ici si on souhaite cliquer dessusdonc je vais cliquer sur cette icône ici pour sélectionner les locators on se retrouve avecles mêmes outils de debug que ceux qu'on pourrait avoir avec chrome ou n'importe quel navigateursauf que là c'est vraiment un outil qui va nous sortir du code pour playwright donc là on voit
00:07:29 :le get by role button avec le nom donc je peux cliquer dessus et le locator va apparaître icion va pouvoir copier ce locator dans notre code et encore mieux pour faire ces étapes et directementpouvoir copier le code on peut cliquer sur record et là vous allez voir que je peux refaire cette
00:07:44 :étape sauf que cette fois ci ça va me créer un nouveau fichier avec le code nécessaire pour faireles actions que je vais faire dans le navigateur donc là vous allez voir qu'on peut continuer commeça là je vois le label donc on va voir get search exact égal to donc je clique là encore à chaque
00:07:59 :clic que je fais on voit le code associé qui se met dans la petite fenêtre à droite là je peuxmettre par exemple python ou on va mettre carrément docstring pour vérifier ce que ça nous retournedocstring tutoriel par exemple et je vais appuyer sur entrée pour valider et là vous voyez qu'on
00:08:13 :a bien donc ici toutes les opérations qu'on a faites qui se retrouvent dans la page donc jepeux cliquer par exemple et revenir donc fermer ce navigateur fermer ça ici on va sortir de notrescript et je peux coller ces informations ici pour pouvoir les exécuter donc je relance le script
00:08:29 :cette fois ci on va aller dans notre configuration et je vais vous montrer comment mettre cettevariante d'environnement donc là on voit qu'on a les variantes d'environnement pour l'instant ona juste python unbuffered égal à 1 qui est la variable par défaut je vais mettre un pointvirgule ici et mettre pwdebug égal à 1 et on peut renommer cette configuration par exemple en
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.