web_harvester, un collecteur web qui vous indique « ce qui a changé » lorsqu’il reste activé (extension Chrome + CLI Python)
(chromewebstore.google.com)En créant plusieurs crawlers, je me suis toujours heurté au même problème. La plupart se contentent de scraper une fois puis s’arrêtent ; du coup, pour savoir ce qui m’intéressait vraiment — « qu’est-ce qui a changé depuis hier ? » (baisse de prix, nouveaux produits, évolution du classement, changement dans les avis) — il fallait à chaque fois retourner sur le site et comparer manuellement.
web_harvester se concentre sur cet aspect : une fois activé, il tourne en continu et vous signale ces « changements ». Comme les mêmes éléments sont accumulés par date dans Google Sheets, CSV, Excel ou SQL, on ne conserve pas seulement une ligne, mais une évolution dans le temps. Et lorsqu’un changement significatif se produit, il arrive directement via un webhook Slack/Discord ou par e-mail. La fréquence de collecte se configure manuellement, avec une fréquence basse par défaut.
J’ai aussi travaillé l’aspect no-code. L’exploration automatique des champs trouve et affiche sur la page des valeurs candidates (nom, prix, etc.) ; il suffit de cocher pour les mapper, sans écrire une seule ligne de code.
Techniquement, la partie la plus intéressante a été le moteur de recon. Ce site contient-il du JSON-LD ? Tout est-il dans __NEXT_DATA__ ? Ou faut-il finalement scraper le DOM ? Comme j’en avais assez d’ouvrir les DevTools à chaque fois pour vérifier manuellement, j’ai essayé de transposer ce raisonnement dans le code. À partir d’une page d’exemple, il effectue automatiquement un diagnostic selon 5 modes (JSON-LD · variables window (__NEXT_DATA__, etc.) · répétition DOM · Google af-data/af-one), puis choisit le chemin d’extraction le moins coûteux et le moins susceptible de casser lors de changements d’UI. Pour les sites SSR ou dont le JSON est intégré au document, il passe légèrement côté serveur ; pour les pages dynamiques ou avec connexion, il utilise votre propre session Chrome (navigateur réel) et applique le même code d’extraction. Le cœur d’extraction (mapping des champs, conversion de types, extraction d’items) est verrouillé par des tests unitaires hors ligne, ce qui rend les refactorings moins inquiétants.
Les principes de conception ont été clairs dès le départ : données publiques · vos propres droits/sessions · basse fréquence · respect de robots. Pas de contournement de CAPTCHA ni de proxy.
La forme est hybride : extension Chrome MV3 + CLI Python. Je le développe et l’exploite seul, donc il reste sans doute des aspérités ; si vous l’essayez et me faites des retours du type « ce résultat de diagnostic recon serait utile » ou « ce genre d’alerte de changement serait bien », je vous en serais vraiment reconnaissant.
Installation gratuite (Chrome Web Store) pour l’essayer immédiatement — récolte, exploration de champs et export CSV/Sheets gratuits (Basic) : https://chromewebstore.google.com/detail/…
Planification sans surveillance et alertes de changement en Pro (paiement unique, -20 % de lancement appliqués automatiquement) : https://joktnova.gumroad.com/l/figvr/LAUNCH20
Données publiques · vos propres droits · basse fréquence · respect de robots · pas de contournement de CAPTCHA/proxy.
Aucun commentaire pour le moment.