Présentation de selectolax et loguru
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte00:00:00 :Pour réaliser ce projet, j'ai décidé de vous présenter deux nouvelles bibliothèques quisont plus récentes, qui sont également plus performantes, notamment pour l'une d'entreelles qui va remplacer l'utilisation de BeautifulSoup. Alors dans cette partie,
00:00:14 :je vais vous montrer ces bibliothèques, comment les installer et également comment les utiliserde façon assez basique. Mais vous allez voir que le fonctionnement, en tout cas pour Selectolax,
00:00:23 :qui est la bibliothèque qui va remplacer BeautifulSoup, est assez similaire à ce que l'ona vu avec l'utilisation des sélecteurs CSS. Donc l'utilisation de ces bibliothèques est
00:00:33 :assez simple, ce qu'il faut vraiment apprendre à maîtriser finalement, comme dans tout avec lescrapping, c'est arriver à sélectionner les bonnes informations en fonction du HTML et également duCSS de la page. Donc pourquoi je vous montre ces bibliothèques ? Pour le cas de Selectolax,
00:00:48 :parce qu'elle est beaucoup plus rapide que BeautifulSoup, et dans cet exercice on vafaire beaucoup d'analyse de code HTML et Selectolax va de 10 à 20 fois plus vite que BeautifulSoup,bien sûr pour cet exercice vous pouvez quand même le faire avec BeautifulSoup si vous souhaitez,ça ne va pas changer grand chose là encore, c'est vraiment juste quelques lignes de code
00:01:05 :à changer. Donc pour installer ces bibliothèques, on va ouvrir un terminal et on va utiliser toutsimplement pip, avec pip install. Donc la première c'est Selectolax, comme ceci,
00:01:14 :tout en minuscule, je valide avec entrée, dans mon cas je l'ai déjà installée donc elle est déjàdans mon environnement virtuel. Je vais également installer Loguru, qui est l'autre bibliothèque que
00:01:26 :je vais installer là encore avec pip install, donc pip install Loguru, c'est juste une bibliothèquequi va nous permettre de créer des loggers plus facilement, puisqu'il y a pas mal de choses quisont un petit peu difficiles à retenir je trouve avec le module logging. Là encore si vous êtes à
00:01:40 :l'aise et que vous souhaitez utiliser le module logging donc sans avoir aucune dépendance, puisquele module logging est disponible dans la bibliothèque standard de Python, vous pouvez trèsbien le faire. Donc je vais vous montrer déjà Loguru, donc je vais dire from Loguru import
00:01:54 :logger, vous allez voir que là encore ça va être assez semblable à ce qu'on fait avec le modulelogging. La première chose que je vais faire c'est enlever le logger par défaut, donc je vais faire
00:02:02 :logger.remove puisque je vais vouloir faire deux loggers, un premier logger qui va écrire sur ledisque dans un fichier qui va être un fichier ici vous voyez books.log et un autre logger qui va
00:02:13 :écrire directement dans le terminal pour qu'on puisse voir ce qu'il se passe quand on lancele script. Donc je veux enlever le logger par défaut avec donc logger.remove et je vais en
00:02:22 :ajouter un autre avec logger.add. Le premier argument qu'on va passer ici c'est le nom dufichier donc je vais l'appeler books.log tout simplement et on a pas mal d'options assez
00:02:30 :intéressantes, notamment le fait de pouvoir faire une rotation du fichier à partir d'un certainmoment. Alors la rotation ça va être avec l'argument rotation et on va donner en valeur
00:02:39 :une chaîne de caractère avec la taille qu'on ne souhaite pas dépasser. Donc si je mets parexemple 500 kb ça va faire en sorte que nos fichiers ne feront pas plus de 500 kilobytes doncça nous permet d'éviter d'avoir des fichiers trop volumineux. Je vous laisse aller voir la
00:02:51 :documentation de Loguru si vous voulez voir plus de paramètres disponibles. Vous avez égalementretention qui permet de dire qu'à partir d'un certain moment on souhaite ne plus conserver lesfichiers de log donc on peut dire par exemple qu'au bout d'une semaine on souhaite passer àd'autres fichiers et supprimer les anciens qu'on avait. Là aussi ça peut être pas mal pour éviter
00:03:08 :d'avoir des fichiers qui grossissent trop et qui restent sur le disque. Et le dernier argument qu'onva mettre bien entendu c'est le niveau qui là ne va pas changer par rapport au module logging dePython donc dans notre cas on va le mettre en warning pour le loggeur qu'on va mettre sur le
00:03:22 :disque donc dans books.log c'est à dire qu'on ne veut afficher que les éléments qui vont vraimentposer problème on ne veut pas afficher tous les éléments d'information on veut juste dans lelog pouvoir lire les problèmes avec donc warning avec error ou avec critical qui sont les troisniveaux à partir de warning donc warning qui signifie avertissement. Et on va ajouter un autre
00:03:40 :loggeur donc pour écrire dans le terminal donc pour ça je vais importer le module 6 et je vaisrediriger donc ce loggeur avec loggeur.add vers le 6.stdr donc stdr c'est quoi c'est standard
00:03:52 :error donc c'est l'output dans lequel on va logger les erreurs qui va être dans le terminal et je vaismettre le level ici à info c'est à dire qu'on va afficher beaucoup plus de messages dans le terminalpuisqu'on souhaite voir ce qui se passe quand on va exécuter notre script et pouvoir voir les
00:04:07 :différentes opérations par lesquelles on va passer ce qui n'est pas le cas du loggeur sur le fichierpour lequel on souhaite juste avoir les problèmes. Et maintenant pour select all-axes on va utiliser
00:04:16 :donc le module select all-axes et on a à l'intérieur un module parser et on va importer html parser.Donc le html parser c'est exactement comme le beautiful soup quand on fait from bs4 importbeautiful soup ça va être exactement la même chose c'est à dire qu'on va par exemple faire
00:04:31 :une requête alors je vais faire import request je vais aller chercher l'url vers books2scrapet je vais vous montrer si on fait une requête donc si je fais r égale request.get vers cette
00:04:40 :url on peut récupérer un arbre avec html parser alors généralement dans la documentation lesexemples vous allez voir le nom de variable qui va être utilisé qui est différent qui est treeà la place de beautiful soup où généralement on voit soup donc moi je vais utiliser ces deux noms
00:04:53 :de variables pour ces deux méthodes pour rester à peu près cohérent avec ce qu'on voit sur le netmais vous pouvez mettre n'importe quel nom de variable bien entendu. Donc avec html parser
00:05:02 :là encore c'est très facile on va lui passer r.txt et on n'a pas besoin de spécifier comme on le faitavec beautiful soup le parser qu'on souhaite utiliser avec beautiful soup du coup on l'a déjàvu on fait r.txt et on spécifie le parser qu'on souhaite utiliser la plupart du temps html.parser
00:05:16 :donc ça ça va être vraiment identique les deux vont vous permettre d'accéder à un arbre quiva permettre par la suite donc sur soup ou sur tree d'accéder à différents éléments de la page.
00:05:25 :Et ensuite pour récupérer des éléments avec selectallax on va beaucoup passer par lessélecteurs css donc c'est un peu la même chose que ce qu'on avait vu avec le soup.select et
00:05:34 :select1 donc on va avoir soup.select et soup.select1 avec beautiful soup qui nous permetde sélectionner tous les éléments ou un élément donc par exemple on pourrait récupérer tous lesliens ou juste le premier lien qui est trouvé sur la page on pourrait faire la même chose avec leh1 ou n'importe quel autre balise html et avec l'arbre on va faire tree.css et vous avez css et
00:05:54 :css first donc qui correspondent respectivement au select et au select1 donc là si je récupèrele premier lien ici et le css first avec le lien ça va donner la même chose. Donc je vais vous
00:06:05 :montrer on va faire un all links soup ici et un first link soup et on va faire la même choseici avec all links tree et first link tree ici et je vais faire un print ou plutôt on va faire undebug donc je vais mettre mon point de debug ici et je vais lancer le script en mode debug et vous
00:06:23 :allez voir ce que l'on va récupérer dans ces quatre variables donc on a bien dans le cas debeautiful soup un set donc result set ici avec une liste en fait de nodes avec le tree on va avoirle même nombre d'éléments donc 94 avec des nodes ici et pareil donc avec first link soup on a ce
00:06:39 :qu'on appelle un tag qui correspond à l'élément qu'on va récupérer donc le premier élément etici on a une node avec first link tree et vous voyez donc par exemple pour select all axe onva voir les attributs donc par exemple pour accéder à l'attribut href qu'on aurait également avec le
00:06:52 :first link soup si on va voir dans attrs ici donc pour attributes on va également pouvoir récupérerle href donc vous voyez c'est assez similaire il n'y a pas grand chose de différent donc là encoreje vous laisse aller voir la documentation de select all axe si vous choisissez de l'utiliser
00:07:06 :pour cet exercice sinon vous pouvez donc comme vous l'avez vu puisque vous êtes plus habituésavec beautiful soup continuer avec beautiful soup moi dans la suite de cette formation je vaisutiliser select all axe pour vous faire découvrir ce nouvel outil et pour que vous puissiez l'utilisersur vos projets ça vous permettra de l'apprendre en pratiquant sur cet exemple et vous allez voir
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.