Je capture des liens de vidéos de crash de voitures Turques - Scraping

  • avant-hier
Vidéo disponible sur Youtube :
https://www.youtube.com/watch?v=1K5wGYzWToI


On récupère des liens de vidéos de crash de voitures, voire si on peut en faire une chaîne Youtube automatisée.
Ce qu'on va en faire exactement ? On verra bien plus tard

Le code de la vidéo : https://github.com/pierreminiggio/trafic-gov-fr-video-link-fetcher/tree/10dd2177cacd5e9c151252d06f3cd76426ee801b

Comment automatiser une chaîne Youtube : https://www.youtube.com/watch?v=xCLLwW_IR1A&list=PLMzEhcF7dipB1SPcGCshGnkEJTkBF2yRZ&index=14

Scraping via Curl - Verbes languages françaises : https://www.youtube.com/watch?v=SC4AZvRarM8&list=PLMzEhcF7dipB1SPcGCshGnkEJTkBF2yRZ&index=23

Scraping via Puppeteer - Tutoriel sur Facebook : https://www.youtube.com/watch?v=oTPnplOWbs4&list=PLMzEhcF7dipB1SPcGCshGnkEJTkBF2yRZ&index=26

Si vous avez besoin d'aide pour apprendre quelque chose en développement, j'ai mon ami @Graven - Développement qui a un super discord pour ça :
https://ggio.link/discord-graven

▶️ https://ggio.link/youtube
https://ggio.link/twitter
https://ggio.link/facebook
https://ggio.link/linkedin
https://ggio.link/linkedin-page
https://ggio.link/instagram
https://ggio.link/tiktok
https://ggio.link/email

↑↑↑ Suis-moi ! ↑↑↑

Mes autres chaînes :
▶️ https://ggio.link/youtube-2
▶️ https://ggio.link/shorts
▶️ https://ggio.link/likes

Ce que j'utilise :

Informatique :
- PC Portable : https://ggio.link/lenovo-ideapad-3
- Téléphone : https://ggio.link/xiami-redmi-7
- Souris : https://ggio.link/logitech-g203
- Caméra : https://ggio.link/dji-osmo-action-cam
- Enregistreur : https://ggio.link/zoom-h1n
- Microphone : https://ggio.link/behringer-xm8500
- Pied de micro : https://ggio.link/pied-de-micro
- Mini-jack : https://ggio.link/mini-jack-1m
- Carte son : https://ggio.link/behringer-umc404hd

Musique :
- Guitare Principale* : https://ggio.link/guitare-orange
- Guitare Baryton : https://ggio.link/guitare-rouge
- Guitare Vibrato : https://ggio.link/guitare-noire
- Guitare 8 cordes : https://ggio.link/guitare-8-cordes
- Basse 4 cordes : https://ggio.link/basse
- Basse 6 cordes : https://ggio.link/guitarbass
- Ukulele : https://ggio.link/ukulele

* = Pas exactement le même objet.

Si vous voulez être payés pour prêter vos sous, y'a ce site que j'aime bien et que j'utilise :
https://ggio.link/bienpreter

Tags :
Je capture des liens de vidéos de crash de voitures Turques - Scraping
Miniggio
Pierre Miniggio
accidents de la route
car crash
automatiser une chaine youtube
automatiser video youtube
automatiser chaine youtube
automatiser création vidéo
turquie 2023
développement web turquie
programmation turquie
comment devenir développeur
comment devenir développeur web
projet programmation
projet programmation web
automatisation youtube
accident de voiture
accident de voiture turquie
accident de la route
accident de la route turquie
Pierre
Transcription
00:00Salut salut ! Est-ce que je vous ai manqué ? Je suis de retour pour enfin refaire un peu de code sur cette chaîne, parce que ça fait longtemps que je n'en ai pas fait.
00:08Alors il y a un petit moment, j'avais automatisé une chaîne YouTube. J'avais fait quelques vidéos à ce sujet d'ailleurs.
00:13Donc il y avait notamment la chaîne YouTube qui postait les récaps de likes de mes vidéos, qui correspondent à cette vidéo-là.
00:20Et aussi une autre chaîne YouTube en rapport avec Elon Musk que j'avais automatisé, qui correspond à cette vidéo-là.
00:26Donc c'était deux trucs assez rigolos à faire. Et donc là, ce coup-ci, je vais essayer d'automatiser une nouvelle chaîne YouTube.
00:32Sauf que cette chaîne YouTube, on ne va pas l'automatiser dans cette vidéo. Dans cette vidéo, ce qu'on va faire, c'est simplement récupérer des données qu'on va avoir besoin pour faire les vidéos.
00:39Alors, qu'est-ce que c'est que cette chaîne YouTube ? Il se trouve qu'il y a un an, j'avais discuté avec quelqu'un sur Discord qui m'avait trouvé ce site qui était assez rigolo.
00:48Et ce site, c'est un site de la sécurité routière de la Turquie. Et sur ce site, on peut trouver des vidéos d'accidents.
00:58Donc là, on voit par exemple, si j'ouvre cette vidéo, on voit deux voitures qui se percutent.
01:06On va ouvrir une deuxième vidéo par exemple, celle-là. Qu'est-ce qu'il y a de beau sur celle-là ?
01:11Ouf. Ah oui, pas gentil quand même.
01:16Donc là, on a des magnifiques accidents. Et donc, je me demande qu'est-ce qu'on peut en faire de ces vidéos.
01:20Parce qu'on voit qu'ici, chaque mois, il y a des nouvelles vidéos qui sortent.
01:24Donc peut-être qu'on peut potentiellement faire une chaîne YouTube qui, tous les mois, sort un récap de ces accidents.
01:29Est-ce qu'on peut en faire peut-être quelque chose d'un peu humoristique ? Est-ce qu'on peut en faire quelque chose d'un peu sérieux ? Je ne sais pas.
01:34Mais il y a quelque chose qu'on pourrait faire avec ces vidéos. Le but, ça va être de trouver quoi.
01:37Ce qu'on va faire dans cette vidéo, c'est qu'on va récupérer les vidéos de ce site pour pouvoir les télécharger.
01:42Et ensuite, on verra plus tard qu'est-ce qu'on en fait.
01:44Comment on peut faire pour télécharger les vidéos du site ?
01:46Déjà, il va falloir se balader sur cette page.
01:48Et en se baladant sur cette page, on va récupérer les liens des vidéos, etc.
01:53Et dès qu'on aura les liens des vidéos, on va pouvoir les télécharger.
01:56Pour télécharger les liens des vidéos, ce qu'on va avoir besoin de faire, c'est de se rendre sur le site et trouver où sont les liens sur la page web.
02:06Si on regarde le code HTML, on voit qu'on a des balises table ici, qui indiquent la liste des vidéos.
02:12Puis après, si on descend en dessous, on a une balise div.
02:16Et là, on arrive au tableau suivant, qui est en dessous dans la balise table.
02:20Et ensuite, si on descend, on a à nouveau une balise div, puis une balise table.
02:24Et c'est comme ça qu'on a chaque mois de vidéos.
02:26On a aussi le nom du mois écrit en turc, et les vidéos numérotées dans l'ordre.
02:31Ce qu'on peut remarquer dans la structure de l'HTML, c'est qu'elle est bizarre, puisqu'on a une structure qui n'est pas linéaire.
02:37Vous voyez, parce que ça fait des nœuds à chaque fois qu'on arrive au mois suivant.
02:41Je ne sais pas si c'est prévu que ça soit comme ça de base, ou si c'est potentiellement une erreur de code HTML qui est dans cette page web.
02:49Ce qui fait qu'il y a une div qui n'est pas fermée, et qu'on se retrouve avec des tables imbriquées les unes dans les autres.
02:55Peu importe quelle est la raison, ce n'est pas le plus important.
02:58Le plus important, c'est de savoir comment on récupère ces vidéos.
03:01Pour faire ça, on a deux méthodes qu'on peut utiliser.
03:03Il y en a une que j'ai utilisée, par exemple, quand j'avais fait mon API, api.toutlesverbes.com,
03:11qui était l'API où je listais les verbes de la langue française.
03:14Et pour récupérer les verbes à partir de l'une des sources auxquelles j'avais accès,
03:17j'avais utilisé une commande curl, qui me permet de télécharger le contenu de la page web, et ensuite interagir directement avec ce contenu.
03:25C'est la première chose que je vais tester avec cette page,
03:27voir si rien qu'avec une simple commande curl, je peux récupérer directement ce contenu HTML.
03:31Et si jamais ça ne fonctionne pas, je vais pouvoir tester une autre méthode par la suite,
03:34qui est le web scraping.
03:36J'avais d'ailleurs fait un tuto avec Facebook, qui date un peu, donc qui fonctionne peut-être plus, je ne sais pas.
03:41Mais pour vous montrer, au moins dans la théorie, comment on peut faire du web scraping pour récupérer des données depuis un site web.
03:46Ce que je vais faire, c'est tester la commande curl et on va voir ce qui va se passer.
03:49J'ai lancé la commande curl, le site,
03:51et j'ai redirigé la sortie dans le fichier test.html, donc j'ai tout simplement sauvegardé la page web.
03:56J'ai d'abord essayé de lancer dans un navigateur par curiosité, mais j'ai une page blanche.
04:00Et j'ai ensuite ouvert le code qui est dans cette page HTML, et on arrive ici dans ce contenu.
04:07On peut maintenant chercher les fameuses balises tables.
04:10Et là on voit qu'on en a une ici, qui correspond à le dernier mois du site, qui est mars 2023,
04:17parce que le site a quelques mois de décalage par rapport à la réalité.
04:21Et là on voit qu'on a le contenu du tableau, on a le mois, et on a les liens vers les vidéos qui sont dedans.
04:27Et ce qu'on peut remarquer aussi, c'est que les divs ont l'air d'être fermées peut-être correctement.
04:33Ah non, elle est là.
04:35Donc là ici elle est là, la fameuse div en plus, ce qui fait que ça fait de l'imbrication.
04:38Donc c'est très probablement une erreur de copier-coller ou de la part des concepteurs du site.
04:45Mais le fait est qu'avec un simple curl ici, j'ai déjà tous les liens des vidéos que je peux récupérer.
04:50Donc je n'ai pas besoin d'utiliser la solution webstriping que je vous ai montré tout à l'heure.
04:53Je vais tout simplement utiliser un curl, et récupérer uniquement les liens des vidéos qui m'intéressent.
04:59Donc j'ai avancé sur le script, et je récupère maintenant tous les mois des tableaux.
05:04Donc pour faire ça, je parcours chaque tableau.
05:07Donc je recherche d'abord à quel moment commence le tableau.
05:13Donc on cherche toujours la petite balise table.
05:16Une fois qu'on est dans le tableau, on va ensuite chercher où est la fin du tableau.
05:21Donc l'autre table ici, donc la balise fermante.
05:24Donc là après on arrive à un moment où on a le tableau.
05:27Et une fois qu'on a le tableau, le but c'est de trouver le mois.
05:31Le mois, l'endroit où on peut le récupérer.
05:33Si on voit ici dans cette balise ici, td, machin, bidule, span.
05:37On voit ici que j'ai le nom du mois ainsi que l'année qui est écrit.
05:40Donc je me suis basé simplement sur le span style color ici.
05:43Donc encore une fois, je découpe ma chaîne de caractère en me basant sur ce span machin.
05:49Et ensuite, au moment où la balise fermante commence, je split à nouveau.
05:54Pour pouvoir récupérer uniquement ce qu'il y a entre les deux.
05:57Et ce qu'il y a entre les deux, c'est le mois.
05:59Donc si j'exécute, on voit qu'ici je récupère tous les mois de chaque tableau en turc.
06:05Donc là, on va avoir plusieurs soucis parce qu'on voit que ce n'est pas très bien formaté.
06:11On voit qu'il y a des fois où c'est en minuscules, des fois c'est en majuscules.
06:14On voit que des fois ici il y a un truc, je ne sais pas ce que c'est ça.
06:18Donc je ne sais pas exactement comment je vais pouvoir traiter ça.
06:22Mais le but maintenant, ça va être de pouvoir traduire ces données de mois et années
06:26en version mois et années probablement numérique.
06:29Ce serait le plus simple pour les stocker.
06:31Pour que je puisse savoir quel mois et quelle année ça correspond.
06:34Pour pouvoir traduire les mois turcs en nombre numérique.
06:37La méthode que j'ai utilisée est relativement simple.
06:40J'ai hésité à partir dans les méthodes compliquées avec des formatages de date etc.
06:44Mais une manière très simple de le faire, c'est tout simplement avec un mapping.
06:47On voit à gauche ici j'ai les mois écrits en turc.
06:49Et à droite j'ai les mois en numérique.
06:52Et ce qui me permet en fait qu'à chaque fois que j'envoie le nom du mois.
06:55Je vérifie si ça correspond au numéro et si c'est le cas, je le retourne.
07:00Ce qui fait que là ensuite, une fois que je récupère le nom du mois.
07:03Je peux ensuite le formater pour l'associer à l'année qui est ici.
07:08Et je peux récupérer le mois sous le format année-mois.
07:12Et on voit que ça donne ici.
07:14Donc là on voit par exemple qu'il y a août.
07:16Si du coup je récupère le numéro 8 et on peut écrire 2019-08.
07:20Et c'est comme ça que je récupère l'année et le mois.
07:22Donc maintenant qu'on a le mois et l'année.
07:24Ce qu'il va falloir récupérer c'est les liens des vidéos.
07:27Je viens maintenant de récupérer tous les liens de tous les tableaux.
07:30Pour faire ça j'utilise une méthode assez similaire avec les tableaux.
07:33C'est à dire que je vais définir à quoi ressemble la balise de lien.
07:37Donc le début de la balise de lien.
07:38C'est à dire le ahref ici avec l'ouverture de guillemets.
07:42Et ensuite la fermeture pareil avec une fermeture de guillemets.
07:47C'est à dire qu'au milieu de ces deux trucs là j'ai le lien.
07:50Et ensuite ce truc là je dois le préfixer par le nom de domaine du site.
07:54Qui est traffic.goph.tr
07:56Donc là c'est ce que je fais ici.
07:58Je récupère ce qui est avant le lien.
08:02Enfin ce que je veux dire après l'ouverture du lien.
08:05Une fois que là ici j'ai récupéré l'ouverture du lien.
08:09Je le sépare en utilisant la fin du lien.
08:12Si j'ai moins de deux choses c'est que ça n'a pas marché.
08:16C'est que le lien ne se ferme pas.
08:18Et si jamais j'ai exactement deux choses.
08:22Et bien ça veut dire que j'ai le lien qui est au tout début.
08:25Donc avant la fermeture du lien.
08:26Avant les guillemets ici.
08:28Et donc là une fois que j'ai le lien.
08:30Je rajoute le nom de domaine du trafic.
08:32Plutôt le nom de domaine du site de prévention routière du gouvernement en question.
08:37Et je rajoute le lien relatif.
08:39Et j'ai aussi le tableau des liens.
08:41Ensuite autre chose c'est que les liens ne sont pas dans l'ordre.
08:43Là vous voyez j'ai 2, 12, 22, 1, 11, 21 etc.
08:47Donc j'utilise une petite fonction sort ici pour les mettre dans l'ordre.
08:51Et ensuite tout à fin j'utilise une fonction cassort.
08:54Qui permet de trier mon tableau final par le mois et l'année.
08:58Ce qui va me permettre de les avoir dans l'ordre chronologique.
09:01Parce que sinon je les ai dans l'ordre inversement chronologique.
09:04Vu que le début de la page ici commence par 2023.
09:07Et si on crole etc on va remonter jusqu'en 2019.
09:12Et donc là c'est comme ça que j'ai mon tableau de lien.
09:14Donc là on voit le magnifique varnump.
09:16Donc maintenant ce que je vais faire c'est juste changer le retour de ma fonction.
09:18Pour que ce soit un joli json pour que je puisse le réutiliser.
09:21Et comme ça voilà j'aurai ce magnifique bout de code.
09:25Qui permet de récupérer les mois et l'année.
09:28Et les vidéos associées à ce mois et année.
09:31Pour tous ces accidents.
09:33Et ensuite l'objectif après ce sera de les sauvegarder en base de données.
09:37Et voilà j'ai formaté la réponse en json.
09:39Pour que ce soit tout joli dans la console.
09:41La prochaine étape ce sera de sauvegarder dans la base de données.
09:43Je ne pense pas que je vais le faire en vidéo.
09:46Et ensuite dès que ça sera sauvegardé en base de données.
09:48On va voir ce qu'on va faire pour télécharger des vidéos etc.
09:51Bon bah c'était Pierre j'espère que cette petite vidéo vous a plu.
09:53Et puis je vous retrouve du coup dans la prochaine vidéo pour la suite du projet.
09:57Comme d'hab sur la fin de la vidéo je vous mets des vidéos en rapport avec ce dont j'ai parlé dans la vidéo sur l'écran.
10:01N'hésitez pas à aller les voir.
10:03Et sur ce moi je vous dis à la prochaine.

Recommandations