Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un comptelive_helpToutes les questions

Simon
19 décembre 2024
Résolue
0 réponses
J'adore, 9 min 03: "qu'est-ce que je ferais si j'étais un humain?" 🤣 (désolé, ce n'est pas du tout une question, mais je n'ai pas résisté !)
00:00:00 :Dans cette partie, on va préparer un petit cahier des charges de notre scrapping.C'est quelque chose que je conseille très souvent aux étudiants,que ce soit pour des scripts de scrapping ou des scripts Python en général,c'est important avant de mettre les mains dans le code,d'écrire un petit peu un plan d'attaque de ce qu'on va faire
00:00:16 :parce que ça peut grandement impacter les décisions que vous allez prendre par la suiteet vous permettre d'éviter des erreurs ou de faire des choses qui ne seraient pas utileset de partir dans la mauvaise direction.
00:00:25 :Surtout dans ce cas-ci dans lequel on a quand même un script qui nous attendqui va être assez conséquent, donc c'est bien important de passer par cette étape.
00:00:32 :Personnellement, je suis assez partisan de ne pas non plus aller trop dans le détail.Je vois souvent des étudiants qui ont des profs ou qui sont dans des écolesoù vraiment ça va, je trouve, un peu trop loin.
00:00:40 :On leur demande de faire des graphs, de faire des documents de 20 pagesavant de commencer un script.Là, on ne va pas aller jusque là quand même.
00:00:47 :Moi, je préfère rester quand même assez minimalisteet juste préparer un petit plan dans lequel, dans ce cas-ci,je vais indiquer les fonctions que je souhaite coder.
00:00:54 :Je vais ouvrir trois guillemets ici pour faire une chaîne de caractère multiligneet je vais indiquer ici les fonctions que je souhaite coder.On va analyser un petit peu ce qu'on peut faire,ce qu'on doit faire ici dans le cas de cet exercice.
00:01:05 :Ce qu'on veut, c'est récupérer le prix total de la bibliothèque.On a donc des livres qui sont disponibles en différentes catégories.On pourrait se dire qu'on va aller dans chaque catégoriemais peut-être qu'il y a des livres qui ne sont pas dans une catégorie.
00:01:18 :Je pense que le mieux dans ce cas-ci, vous voyez que sur ce site,on a 1000 résultats et on a 20 livres par page.Si on descend en bas, on voit qu'ici, on a un bouton Nextqui nous permet de passer à la prochaine page.
00:01:30 :On va analyser un petit peu tout ça.On va regarder, là, je suis sur la page principalequi dispose d'une URL, donc books2scrap.com.index.Et si je m'en vais sur la page 2, je vois que j'ai une URL qui changeavec cette fois-ci une URL catalogue slash page-2.html.
00:01:46 :Déjà, la bonne indication, c'est qu'on a 1-2 dans le nom de l'URL.Donc, j'imagine que si je change le 2 pour un 3,je vais me rendre à la troisième page.
00:01:54 :Donc, c'est déjà une bonne indication.On va en même temps faire une petite analyse pour voirles différentes techniques qu'on pourrait utiliser.Donc, ce qu'on peut faire, c'est soit partir de l'URL.
00:02:03 :Donc, on a une URL qui est différente pour la page 1 et pour la page 2.Mais, et c'est là que vous allez voir que c'est très important d'analyser la page,si vous cliquez sur Preview, donc si vous n'allez pas trop viteet que vous essayez un petit peu de tester tout sur le site,
00:02:14 :quand on clique sur Preview et qu'on clique une deuxième foispour revenir sur la première page, on se rend compteet vous pouvez vous en rendre compte également en essayant de changer l'URL,que la page 1 est également accessible,donc la page d'accueil en mettant cette URL,donc page-1.html.
00:02:28 :Donc, ça veut dire qu'on peut accéder à la première pagesoit avec cette URL qui va avoir un motif différent des autres,soit on peut y accéder ici avec page-1.html.
00:02:37 :Donc là, vous voyez déjà qu'on a deux façons de faire cette navigation.On peut soit partir directement de page 1 et changer juste le numéro,donc faire 1, 2, 3 comme ça,jusqu'à, donc je ne sais pas combien de pages, on en a 50,donc on peut aller comme ça jusqu'à 50,
00:02:51 :et j'imagine qu'à 51, on va se retrouver avec une erreur,donc à 50, effectivement, on arrive à la dernière pageet à 51, j'imagine qu'on aura une erreur 404.
00:02:59 :C'est exactement ça qui se passe.Donc là, vous voyez deux choix.Soit on se dit, ok, j'ai 50 pages, j'en aurai jamais pluset je vais juste faire une boucle for, par exemple,qui va itérer de la page 1 à la page 50.
00:03:10 :Ça peut marcher, le risque de ça, c'est que,si jamais la librairie change de nombre de pages,si on a 51 pages, 52 pages, il faudra adapter votre script.
00:03:19 :Donc moi, ce que je vais préférer faire, c'est utiliser ce bouton Next,c'est-à-dire que je vais faire un script qui va partir de la première pageet qui va à chaque fois chercher l'URL de la page suivantejusqu'à ce qu'il n'y ait plus de pages à consommer.
00:03:32 :Donc en fait, on va arriver jusqu'à la page 50et arrivé à la page 50, il n'y aura plus de bouton Nextet on va pouvoir utiliser cette condition pour s'arrêter en faitet pour dire que voilà, on a parcouru toute la bibliothèque.
00:03:42 :Donc à partir de ça, j'ai plusieurs informations que je vais prévoiret notamment plusieurs fonctions que je vais devoir coder.Donc on va avoir une fonction pour récupérer l'URL de la page suivante.
00:03:50 :Alors je vais faire un petit peu de place pour qu'on voit bientout ce que j'écris sur une seule ligne.Donc déjà, on va avoir une fonction à créerpour, à partir d'une page, récupérer la page suivante.
00:03:59 :Donc là ensuite, on pourrait spécifier qu'il faut récupérerà partir d'une page ou à partir d'une URL.Donc là, c'est là où on ne va peut-être pas forcémenttrop rentrer dans le détail.
00:04:10 :Peut-être que ça, c'est quelque chose qu'on va déterminerlors de l'implémentation.Donc je vais juste mettre en forme de questionrécupérer à partir du HTML directementou de l'URL, point d'interrogation.
00:04:21 :Donc on n'est pas encore sûr quelle méthode on va utilisermais on sait qu'on va devoir récupérer cette URLde la prochaine page.Ensuite, pour calculer le prix d'un livre,qu'est-ce qu'on doit faire ?
00:04:30 :Si on retourne sur la page principale ici,sur la page principale, on a juste l'information du prixet le fait que le livre est en stock ou nonmais on n'a pas la quantité de livres en stock.
00:04:38 :Pour ça, il faut se rendre sur la page du livreet là, on va voir la quantité à deux endroits ici.Donc s'il est en stock, on a in stocket le nombre d'unités disponibleset on va l'avoir également dans le tableau d'informations iciavec availability in stock, 22 available ici.
00:04:52 :Donc on a cette information à deux endroitsmais il faut vraiment se rendre sur la page du livre.Donc là encore, différentes façons d'aborder le problèmecomme toujours en programmation,il n'y a pas une seule façon de faire les choses.
00:05:03 :Donc qu'est-ce qu'on peut faire ?On peut se dire que en premier lieu,je vais récupérer les URL de tous les livres de la bibliothèqueet ensuite, dans un second temps,je vais accéder à chacune de ces URLpour aller sur la page et récupérer le prix total de chaque livre.
00:05:16 :Ça, c'est une première façon de faire.L'autre façon de faire, c'est à chaque pagede vraiment interrompre entre guillemetsla recherche de la prochaine pageet juste commencer directement sur la première page,récupérer le premier livre,revenir là, récupérer le deuxième, etc.
00:05:30 :Moi, je pense que je vais préférer une approchequi va consister à récupérer déjà dans un premier tempstoutes les URL de tous les livres de la bibliothèque.
00:05:38 :Je préfère faire ça en deux temps.Et une fois qu'on a toutes les URL,donnez ça à une autre fonctionqui va, elle, naviguer sur chaque pagepour récupérer le prix du livre.
00:05:46 :Donc déjà, là, je viens de le dire,il me faut une fonction qui,à partir d'une URL,donc à partir de l'URL d'un livre,va calculer le prix.
00:05:56 :Et là, je peux spécifier encore une fois,on va devoir récupérer,donc ça va peut-être sur une fonction séparéeet je pense que je vais déjà le mettre dans une fonction séparéeparce que là encore, directement,en faisant cet exercice,on peut commencer à penser de façon solide,donc avec le S de solide qui est
00:06:11 :« separation of concern »,donc d'essayer de ne pas avoir trop de chosesqui se passent dans la même fonction.Donc moi, je veux une fonctionqui, à partir de l'URL d'un livre,va calculer le prix.
00:06:19 :Et donc ça, ça veut dire que je vais devoiraller sur l'URL,récupérer le contenu de la pageet également récupérer ces informations,donc à savoir le prix et la quantité en stock.
00:06:29 :Donc moi, je vais faire une fonctionpour récupérer le prixet là, je vais dire à partir du HTML.Donc là, dans ce cas-ci,pas à partir d'une URL,mais directement à partir du HTMLet pareil pour la quantité.
00:06:42 :Donc fonction pour récupérerla quantité disponible à partir du HTML.Donc vous voyez,on commence déjà à avoir plusieurs fonctions.On a déjà quatre fonctions d'identifiéeset si je reviens sur la page d'accueil,qu'est-ce que je vais avoir besoin de faire d'autre ?
00:06:55 :Donc on va avoir toutes les URLs,donc récupérer l'URL de la page suivante.Non, en fait,il manque effectivement une fonction iciqui va nous permettre de récupérertoutes les URLs de la bibliothèque.
00:07:05 :Donc on va dire fonction pour récupérerles URLs de tous les livres.Et là, vous voyez,pour récupérer les URLs de tous les livres,comme on a un système de pagination,il va déjà nous falloir une fonctionpour récupérer les URLs d'une page.
00:07:18 :Donc fonction pour récupérerles URLs sur une page spécifique.Donc là, vous voyez,je ne vais même pas le mettre comme ça,en dépendance,ça va être deux fonctions séparées.
00:07:27 :Donc une fonction,on va lui donner tout simplementle HTML d'une page.Donc là aussi,on pourrait spécifier si c'est à partir du HTMLou à partir de l'URL.
00:07:35 :Là encore,je pense que je vais laisser çapour l'implémentation.On va voir comment se construitpetit à petit notre scriptet qu'est-ce qui fait le plus de senspour chaque fonction.
00:07:43 :Donc fonction pour récupérer les URLsde tous les livres de la bibliothèqueet une fonction pour récupérer les URLssur une page spécifique.Donc comme ça, en fait,on va pouvoir arriver sur la première page,récupérer les URLs de tous les livressur la page,récupérer l'URL de la page suivante
00:07:59 :avec cette fonction ici.Ensuite,récupérer,passer à la page suivante.Donc on va,à partir de cette URLqu'on a récupérée,passer à la page suivante,récupérer de nouveau les URLssur une page spécifiqueet comme ça,petit à petit,construire une listede tous les URLs de la bibliothèque
00:08:14 :qui sera dans cette fonction ici.Et après,une fois qu'on a ça,eh bien,on va pouvoir boucler sur les URLs.Donc à partir de l'URL d'un livre,récupérer le prix,récupérer la quantité.
00:08:23 :Là,je pense que le calculentre les deux,on le fera à l'intérieurde cette fonction.Donc on pourrait essayerde séparer encoremais je pense que là,ça deviendra un petit peu troppuisqu'il ne faut pas aller trop non plus.
00:08:33 :Il ne faut pas trop séparer les choses.À la fin,on se retrouve des foisavec des fonctions qui font une ligne.Le but ici,c'est de ne pas avoirune seule fonction qui fait toutmais de ne pas non plus avoirdes fonctions qui masquentjuste une ligne de code.
00:08:43 :Donc là,je pourrais peut-être faireune fonction qui calculele prix totalà partir du prix du livreet la quantité.Mais comme je vous dis,en fait,ça c'est juste une multiplicationDonc je pense que ça commenceà être pas mal.
00:08:57 :Il me semble qu'on a toutce qu'il nous faut.Je réfléchis encore un petit peumais là,vous voyez dans ma têtele processus.Qu'est-ce que je feraissi j'étais un humain en fait ?
00:09:06 :Si j'étais un humain,probablement que je feraisla première façon de faire,c'est-à-dire que je viendrais ici,je prendrais le total,donc 51.77 x 22,
00:09:13 :je reviendrais iciet je ferais la même chosepour chaque livreet une fois que j'arrive en bas,je vais sur Next.Si je suis une machine,je vais plutôt récupérer déjàtout ce que j'ai besoin ici.
00:09:21 :Là, on l'a vu,je préfère déjà tout récupérer icipour bien séparer les choseset ensuite,à partir des URL,directement aller sur cette URL.
00:09:30 :Ensuite,ne pas du couprevenir sur la page d'accueilmais juste aller à la suitesur chacune des URL,récupérer tous les prix iciet ensuite,faire une grosse additionde tout çapour récupérer le prix totalde la bibliothèque.
00:09:41 :Donc on va commencer avec ça.Je pense qu'on a déjàde quoi s'occuperet comme je vous l'ai dit,le but n'est pasde faire 100% du scriptdéjà à l'écrit.
00:09:48 :L'idée,c'est juste de ne pas avoirle syndrome de la page blancheet de commenceravec quelque chose.Donc là,on a déjà de quoi s'occuperet probablement que par la suite,on va remodifier tout ça.
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.