Aller au contenu

Scrapers

Collecte automatisée de données web, de la source au fichier exploitable.

Depuis 2022AlternancePersonnelAmis
PythonScrapySeleniumMongoDBNode.jsGitLab

Contexte

Un site publie souvent ce dont j'ai besoin sans proposer de moyen de le récupérer. Listes de contacts, documents, liens, catalogues, fiches produits, informations éparpillées sur des dizaines de sites distincts. Depuis 2022, je construis des scrapers et des crawlers pour automatiser cette collecte, en alternance, pour mes propres projets et pour des proches.

Le besoin revient toujours sous la même forme. La collecte à la main coûterait des heures, et il faudrait tout recommencer à la mise à jour suivante.

Fonctionnement

Chaque source impose sa méthode. Quand une API existe, je passe par elle, avec Node.js et Express. Sinon je développe des scrapers Python, Scrapy pour les pages statiques et Selenium quand le contenu dépend de JavaScript ou d'une navigation à plusieurs étapes. Les crawlers suivent les liens de proche en proche pour parcourir un site entier avant d'en extraire ce qui m'intéresse. Les requêtes sont cadencées pour ne pas peser sur les sources.

Les données brutes sont nettoyées avant d'être conservées. Normalisation des libellés, slugification des titres pour rapprocher une même entité vue sur plusieurs sources, fusion des doublons, conservation des écarts pour arbitrage manuel et historique des modifications.

La sortie s'adapte à l'usage. MongoDB quand les données alimentent une application, un fichier Excel ou CSV quand elles seront lues et retravaillées à la main, un fichier texte pour une simple liste, ou directement un message Discord quand seul le résultat compte.

L'exécution est planifiée. Des cron jobs sous Linux, ou le Planificateur de tâches de Windows quand le poste de travail est la seule machine disponible, lancent les traitements chaque jour. Le résultat part par mail ou sur Discord via un webhook. En cas d'échec, la même notification remonte l'erreur.

Bilan

Ces outils remplacent des heures de recherche et de copier-coller par un traitement qui tourne seul et signale lui-même ses pannes. La supervision se limite à lire les notifications.

L'exercice m'a surtout appris à travailler sur une source que je ne maîtrise pas. Structure qui change sans prévenir, pages incomplètes, protections anti-robot, volumes qui obligent à découper la collecte et à la reprendre là où elle s'est arrêtée.

Retour aux projets