Exporter les données avec un manager
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte00:00:00 :Donc on commence à avoir un script qui est un peu mieux organisé. On va terminer avec cette partie danslaquelle on va sortir de la fonction main toute la logique de récupération des arguments et desvariables ici donc avec le parseur de arc parse et la définition ici du useProxy et donc on va
00:00:17 :sortir tout ça dans une fonction séparée et également la dernière chose qui nous manquec'est l'exportation des données. Pour l'instant on l'a fait là encore dans la fonction main avec
00:00:26 :cette structure conditionnelle ici et ces quelques lignes de code ici pour écrire dans un fichierJSON. Donc ce qu'on va faire c'est qu'on va créer ce qu'on appelle un manager donc on va faire une
00:00:34 :classe qui va nous permettre d'encapsuler cette logique et ça va nous permettre aussi par lasuite si jamais on voulait ajouter d'autres façons de sauvegarder ces données par exemple si onvoulait exporter un csv ou du texte tout simplement et bien ça va être beaucoup plus facile de passer
00:00:49 :par cette classe et de juste ajouter différentes méthodes qui vont nous permettre d'exporter sousdifférents formats et d'avoir toute la logique encapsulée dans cette classe. Donc pour ça je
00:00:58 :vais réutiliser mon IA et je vais lui dire très précisément ce que je souhaite faire ici doncdéjà pour la séparation avec le traitement des arguments et je vais faire ça en deux fois jevais déjà faire un premier prompt pour lui dire de séparer cette partie et on va faire un deuxième
00:01:10 :prompt dans une seconde partie pour extraire les données avec le manager. C'est toujours mieux depas trop les surcharger avec plein de choses d'un coup parce que c'est là qu'il peut commencer àdes fois mélanger un peu les choses ou ne pas le faire super bien et même pour nous ça va être
00:01:21 :plus facile de voir qu'est ce qu'il fait exactement et de review le code après par petits blocs commeça plutôt que de revoir tout d'un coup. Donc je vais faire le premier prompt je voudrais que tu
00:01:31 :sortes de la fonction main la logique qui traite les arguments passés dans le terminal avec arc parse.Donc encore une fois il n'a pas compris les termes un petit peu techniques et sinon pour lereste c'est tout bon je soumets le prompt donc là vous voyez je vais l'arrêter tout de suite parce
00:01:46 :que je n'ai pas été assez précis vous voyez j'ai dit juste que je voulais sortir la logiqueil m'a tout de suite créé une classe et finalement il nous fait une classe avec une méthode statique.
00:01:56 :Donc les méthodes statiques c'est assez rare qu'on en ait besoin en Python donc moi je préfère enfait tout simplement passer par une fonction et vous voyez que encore une fois comme je n'ai pasprécisé ce que je souhaitais et bien il a pris l'initiative de me faire une classe mais je trouve
00:02:10 :que ce n'est pas forcément la meilleure façon de faire donc là encore vous voyez si on ne saitpas ce qu'on veut on peut très rapidement aller dans la complexité là où il n'y en a pas besoindonc c'est pour ça que c'est toujours intéressant et important de garder la main et de bien préciser
00:02:23 :ce qu'on veut pour avoir un code qui va être facile à maintenir. Donc là je vais revenir icien cliquant sur restore pour revenir à ce niveau où j'étais donc on va revenir en arrière ici etlà je vais préciser du coup que je ne veux pas de classe. Donc voilà je veux que tu extraites
00:02:36 :cette logique dans une fonction simple et non pas dans une classe je relance la génération donc làvous voyez qu'il est en train de modifier notre fichier main.py qu'il ne touche pas aux autres on
00:02:45 :n'a pas encore accepté les derniers changements qu'on avait fait sur les modèles et le sessionmanager et le data fetcher mais on va par la suite accepter tout ça pour être sûr de bienavoir tous les changements qui sont sauvegardés. Donc il a créé une nouvelle fonction parseArg
00:02:58 :qui configure la logique retourne un booléen si le proxy doit être utilisé. Donc là vous voyez ila tout simplement extrait cette logique dans une fonction et il retourne si on doit utiliser unproxy ou non. C'est un peu trop spécifique je trouve moi je préférais là encore si on souhaite
00:03:14 :ajouter d'autres arguments par la suite ne pas forcément avoir ici un booléen qui est retournépour l'instant je vais laisser comme ça mais si on devait améliorer le script encore un peu pluspour un usage potentiel futur qui soit un peu plus complexe et bien je pense que ce serait mieux de
00:03:29 :retourner tout simplement par exemple le args ici et ensuite de faire d'autres traitements. Làeffectivement dans ce cas ci ce qui nous intéresse c'est uniquement de savoir si on veut utiliser leproxy de bright data ou non dans ce cas ci je vais laisser comme ça et je vais accepter tous les
00:03:41 :changements que je voulais ici. La deuxième chose qu'on va vouloir faire du coup c'est extraire lesdonnées avec un manager donc je vais lui dire ici avec un deuxième prompt je veux que tu extraisla logique de sauvegarde des données dans une classe que tu peux appeler export manager avec
00:03:56 :une méthode qui permettra de sauvegarder les données au format json comme actuellement. Doncc'est tout bon le prompt est parfait je lui envoie ça et on va voir ce qu'il nous fait. Donc il a
00:04:05 :créé un nouveau fichier qu'il a appelé export manager qui contient ma classe si on va voir laclasse on a donc un dossier de sortie qui par défaut est le dossier courant donc c'est parfaitça nous permet si on souhaite également de modifier ce dossier et on a une méthode donc
00:04:18 :save to json comme je vous disais là la méthode elle va prendre donc les données, le nom dufichier et elle va sauvegarder ici avec le json.dump les données en json et ainsi si on le
00:04:28 :souhaite on pourrait rajouter une méthode par exemple save to csv qui prendrait ces mêmesdonnées on aurait quelque chose d'assez générique qui permet uniquement de sauvegarder les donnéesde différentes façons. Je vérifie ici qu'il a toujours bien gardé mon asdict et qu'il ne l'a
00:04:42 :pas enlevé avec sa façon de faire un petit peu bizarre avec la méthode d'underdict c'est bienil a tout gardé donc il n'a pas modifié ça c'est parfait et là dans mon fichier main on retrouvebien donc la séparation avec le session manager, le data fetcher et le export manager. Donc vous
00:04:56 :voyez c'est beaucoup plus clair comme ça on a des classes qui ont chacune un seul objectif avec legestionnaire des sessions request, le data fetcher ici qui va faire toute la gestion des données etle export manager qui va juste s'occuper de l'export. Et là il a enlevé donc toute cette
00:05:11 :logique qui se retrouvait dans le main pour juste faire un export manager save to json. Donc jevais tout accepter et vous voyez qu'ainsi on se retrouve dans la fonction main avec juste lalogique donc on charge les variables d'environnement, on récupère les arguments du terminal et ensuiteon va récupérer avec le session manager les données, on crée l'export, on fait cette opération pour
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.