Récupérer la valeur totale de la bibliothèque
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte00:00:00 :Donc on arrive à la fin de notre script, on va vérifier maintenant qu'on arrive bienà récupérer le prix des livres et qu'on arrive bien à faire le total, donc pour quece soit pas trop long je vais faire le test sur 2-3 pages et on va voir si tout fonctionne
00:00:12 :et après on pourra lancer sur les 50 pages pour voir si tout fonctionne sur l'entièretéde la bibliothèque.Donc là ce que je vais faire, je vais juste faire un petit compteur, on va dire pagenumber égale à 0 et on va incrémenter ce page number, voilà ici page number plus
00:00:28 :égale à 1 et on va dire if page number plus grand que 2, on va faire un break.Donc je vais commencer déjà par récupérer all books url, je vais mettre un point dedébug ici, je vais lancer mon script, alors je vais appeler le main puisque là je fais
00:00:42 :ça ici, donc je vais à la place lancer le main et on va vérifier qu'on a déjà toutesles url, donc je lance, on récupère bien les 3 premières pages, là on a vu ici lescrapping avec notre info, donc le logger qui nous indique scrapping page, scrappingpage 2, 3, ça fonctionne, là on a 60 éléments dans notre liste, donc c'est bon on va continuer,
00:01:04 :on arrive dans notre boucle, on récupère le prix du premier livre, ça fonctionne,on continue, on récupère le prix du deuxième livre, ça fonctionne, troisième livre etc,donc on va pas faire chaque livre comme ça avec le step over à chaque fois, on va cliquersur resume pour voir ce que ça donne, on va retourner dans notre console, et là on
00:01:24 :a rien donc on va faire un petit logger.info pour vérifier que ça fonctionne bien, parceque là on a aucune information, donc dans le get book price ici, je vais quand mêmemettre un logger info quelque part pour qu'on sache ce qui se passe.
00:01:35 :Donc ici dans le try on va faire logger.info et on va dire scrapping book, et je vais faireun fstring scrapping book at, on va dire plutôt get book price at, et on va mettre l'urlici.
00:01:51 :Donc je relance mon script, je vérifie que tout fonctionne, on a l'info, on récupèredéjà les trois premières pages, et ensuite on récupère le book price à partir des urls,donc ça fonctionne, ça fonctionne, on a bien ce qu'il faut, et là on a des erreurs.
00:02:04 :Alors vous voyez, erreur lors de la requête, donc vous voyez exactement ce que, c'étaitpas prévu, mais c'est exactement ce que je voulais potentiellement vous montrer, c'estque quand on a des erreurs, on les voit, on va les voir également si je vais voir dansmon fichier de log, voilà ici on a les erreurs, voilà, erreur HTTP, donc vous voyez qu'ici
00:02:20 :on n'a pas les infos, on n'a pas l'info, ça ne nous sert pas à grand chose en fait,nous ce qu'on veut voir c'est erreur, donc là on voit qu'on a une erreur à la ligne101, donc si je vais à la ligne 101, c'est une erreur sur la requête, donc qu'est-ce
00:02:32 :qu'on a comme erreur, je retourne voir ici, not found for url, donc 404, on a une erreur404 à l'url, ah oui parce que ok, je pense que je vois le problème, je reviens, ouiok, alors là en fait on a un slash catalogue et on l'a plus après, et si je vais voir
00:02:50 :l'url, effectivement là on a un 404, donc en fait c'est un problème avec l'url et jepense, si je reviens voir là, je pense que c'est le même problème qu'on avait avecle get next page url, c'est que voilà, là ici pareil, en fait on donne l'url de base
00:03:03 :et l'url est différente selon, donc si je reviens voir sur chrome, l'url va être différenteen fonction des pages, puisque là sur la page d'accueil, on va concatener, si je vaisvoir le inspect ici, on a catalogue slash set me free, et si je vais voir sur la page
00:03:18 :2, hop, et que je regarde là, in her wake, là voilà ok, alors là on a une différencevous voyez, ici on a plus le catalogue, puisque là on a le catalogue en fait dans l'urlici, donc l'url relatif ne contient plus le catalogue, donc nous en fait ce qu'on
00:03:31 :fait c'est qu'on fait juste ajouter à l'url de base qui est books to scrap, onajoute le in her wake et il manque le catalogue, donc là en fait ce qu'il faut faire c'estexactement la même chose que ce qu'on avait fait ici avec le get next page, c'est qu'il
00:03:43 :faut lui passer l'url, donc je vais la rajouter ici, url string, on va rajouter le paramètreaussi, hop paramètre url, url de la page qui contient les livres, et là à la placede base url, on va mettre url, et on va la passer également si je reviens, donc désolé
00:04:00 :je vais un petit peu vite, je vais ralentir, donc on a rajouté un paramètre url à getall books url on page, donc c'est quand on arrive sur une page et qu'on veut récupérerles url de tous les livres sur la page, comme l'url de la page est différent et qu'on
00:04:13 :a une url relative qui ne contient pas le catalogue, on ne peut pas repartir de l'urlde base, donc il faut passer cette url à notre fonction, donc là j'ai juste rajoutéle paramètre dans la docstring et je l'ai remplacé ici quand on fait le url join pourne pas utiliser l'url de base mais l'url qu'on va passer, donc ça il faut la passer
00:04:29 :bien entendu ici aussi quand on va récupérer get all books url, on passe le tree et onva aussi lui passer donc l'url de la page actuelle, comme ça on va pouvoir bien concaténerl'url de la page donc slash catalogue slash page 2 si je me souviens bien, si je vais
00:04:43 :voir ici, donc on va sur la page 3 par exemple, page 3 ici, on a catalogue slash page 3 doncon va concaténer tout ça avec l'url relatif, donc je pense que c'est bon, je vais relancerle script pour vérifier, si on a une erreur de toute façon avec la gestion d'erreur qu'on
00:05:01 :a faite, on devrait l'avoir, donc get book price, là on a bien le catalogue qui estcorrectement mis, je continue et suspense, et ça fonctionne, je reconnais le inhawakequi est l'url qui ne fonctionnait pas et là effectivement ça fonctionne, on a plus deproblème, donc getting price, ça fonctionne parfaitement, et là ce qu'on pourrait faire
00:05:23 :aussi, parce que là on fait juste get book price, on pourrait changer le logger, onpourrait le changer ou en mettre un autre dans le get book price, on pourrait le mettreà la fin, on pourrait le déplacer ici, faire une variable intermédiaire pour ça, donclà j'utilise le raccourci clavier option commande V qui me permet de créer une variable
00:05:39 :intermédiaire très facilement, vous pouvez retrouver le raccourci en faisant clic droitet en allant dans refactor, introduce variable ici et ça va créer une variable, donc pricestock vous voyez en plus il a trouvé un bon nom directement, et là du coup on va direget book price at 2rl found up et là on va mettre price stock, voilà, ouais on peut
00:05:59 :même, oui ok je vais laisser ça comme ça, donc je relance et là comme ça dans notreinformation on a directement, voilà found 1138, tac tac tac, ok super, donc ça fonctionnebien, on va pouvoir lancer un test complet et vérifier qu'on a bien récupéré le prixtotal, donc je vais faire un prime de tout ça, et normalement là encore comme on l'a
00:06:18 :vu, vu qu'on a géré les erreurs d'une façon qui permet de continuer le script,si j'ai bien fait ça, même s'il y a des problèmes comme vous l'avez vu, là on avaitdes erreurs 404 mais ça n'a pas arrêté le script, donc si on a des erreurs quellesqu'elles soient, il va les loguer mais ça va aller au bout, et s'il y a des erreurs
00:06:34 :je pourrais aller voir les erreurs dans le fichier de log, alors bien sûr j'ai oubliéune chose importante, là on voit que j'ai un nombre qui n'est pas cohérent et c'estparce que tout simplement j'ai laissé mon page number ici avec le break au bout de 2-3pages, donc forcément ça n'a pas donné grand chose, donc je vais relancer le script,
00:06:51 :n'oubliez pas d'enlever cette condition si vous l'aviez rajoutée pour bien scrapertoutes les pages, donc là si je continue, on voit qu'on va bien continuer jusqu'àla page 50 comme ceci.
00:06:59 :Voilà le script a donc terminé, alors là on a eu un petit conflit entre mon printet le dernier logger, mais voilà on a bien la valeur qui est affichée, qui est cohérenteavec les autres tests que j'avais fait, on est donc à 300 188,27€ comme prix totalde la bibliothèque et on voit ici qu'on a bien réussi à scraper, on n'a pas d'erreur,
00:07:19 :tous les logs que j'ai c'est des infos et je suis allé voir dans le fichier de loget on n'a aucune erreur non plus, donc on a bien un script qui fonctionne dans ce cas-ciavec 100% des requêtes qui ont été correctement effectuées, on a donc la première partie
00:07:32 :qui a bien fonctionné avec le scrapping de toutes les pages, donc on récupère à partirde la page d'index ensuite toutes les autres pages, on a notre logger qui nous indiquepar la suite avec ce log ici qu'aucun bouton next n'a été trouvé, donc c'est logiquepuisqu'on arrive à la page 50 et ensuite on continue avec le scrapping des 1000 livres
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.