Mes outils de scraping et d’automation

Ce que j’appelle ici automation ce sont des taches exécutées et déclenchées de manière automatique. Une sorte de routine autonome dont seul le résultat sera visible par un humain. Le but final est d’avoir des scripts qui scrapent le contenu d’une page régulièrement, des robots Twitter, des notifications intelligentes…

Je découpe mes besoins en différentes fonctions :

  • déclencheur : vérification régulière, écoute d’un flux, attente d’une action sur un service web (Twitter, etc.)
  • extraction et traitement : récupération des données, transformation, construction d’un flux RSS, etc.
  • sortie : notification, email, tweet, etc.

Depuis la fermeture de plusieurs services « no-code » je me tourne de plus en plus vers des solutions que je développe pour la partie extraction/traitement. Ça implique d’héberger son code, c’est plus long mais c’est plus fiable et surtout parfaitement adapté à mon besoin. La phase déclencheur je la laisse à des services tiers (simplement parce que crontab n’est pas disponible sur un serveur mutualisé  😅). Pour ce qui est des sorties, ça dépend de la finalité que j’en ai (information, promotion, notification …).

Un exemple ?
L’achat d’un véhicule demande d’être très réactif sur les offres, j’ai donc créé un service qui me notifie toutes les 10 minutes des nouvelles annonces postées.

Puppeteer

Un navigateur sans interface (basé sur Chrome) et exploitable en NodeJS. Il est assez facile à prendre en main pour un développeur et permet de simuler des actions utilisateurs (clics, mouvement de souris, frappes au clavier…). Comme Scrapy on peut aller très loin.
Je m’en sers d’outil d’extraction et sortie.

RSS-bridge

Un outil de scraping clé en main à héberger. Son but est de créer un flux RSS ou une pseudo-API pour des services qui n’en proposent pas. Il s’utilise directement dans le navigateur. C’est un projet open-source.
Je m’en sers d’outil d’extraction et traitement.

PHP Simple HTML Parser

Un bon outil pour extraire du contenu d’une page web. Il est développé en PHP et s’utilise avec du code. C’est assez puissant, il créé des objets pour chaque nœud du DOM, ce qui demande un peu de ressource pour les longues pages. Cet extracteur est une base pour un script à faire vous-même.
Compétences en développement requises. Je m’en sers comme script de traitement.

Integromat

À mi-chemin entre IFTTT et Yahoo Pipes, c’est un outil très puissant. Il s’utilise avec une interface en ligne pour enchainer les actions avec beaucoup de possibilités : on peut se brancher à des services web, il gère les taches régulières (cron), le JSON et les call HTTP… Pas besoin de connaissance en développement, seulement un peu d’algo.
Je m’en sers comme déclencheur, traitement des données et en sortie.

IFTTT

Un outil en ligne qui offre la possibilité de connecter des services web entre eux. L’usage est assez simple et l’interface est claire. Le fonctionnement se base sur un principe input/output : brancher 2 services ensemble pour créer une applet. Ils ont un service Webhook qui permet d’écouter des requêtes http ou d’en émettre. Il y a aussi une app mobile pour des actions contextualisées.
Je m’en sers comme déclencheur et parfois en sortie.

Zapier

Un peu plus complet que IFTTT sur les options proposées, il se destine à un public plus technique. J’ai eu moins de problème de timeout que sur IFTTT mais il propose moins de services. Son gros point faible est qu’il y a des quotas d’utilisation.
Je m’en sers comme déclencheur et sortie.

Easycron

Un service en ligne de crontab. Les options sont toutes pertinentes et simples à configurer. Ça demande un peu de curiosité aux novices mais si un cron est ce dont vous avez besoin alors c’est la solution la plus rapide. Les quotas sont assez faibles pour le plan gratuit mais pour du quotidien ça tient la route.
Je m’en sers comme déclencheur.

Pushbullet

Une application pour recevoir des notifications sur smartphone et PC. IFTTT et Zapier gèrent ce service. Possibilité de créer ses propres canaux basés sur des RSS (couplé à RSS-bridge c’est le top). Pour approfondir, leur API est complète et leur doc très claire. L’app permet aussi de faire du mirroring de notifications entre smartphone et PC.
Je m’en sers comme sortie et déclecheur.

Visualping

(anciennement changedetection.com)
Un service en ligne pour détecter un changement dans une page. Peu d’options mais ça dépanne et c’est rapide à mettre en place. Les quotas sont exploitables pour un usage de 1 à 2 utilisations par jour. C’est un bon moyen de parser une page seulement quand elle change et non à heure fixe. La sortie de ce service est unique : un email.
Je m’en sers comme déclencheur.

Scrapy

Un outil en Python assez puissant avec beaucoup de ressources en ligne. Il est fait pour crawler des pages très rapidement et récupérer le contenu. La prise en main demande de savoir développer. J’ai tendance à préférer Puppeteer qui peut simuler plus d’action utilisateur.
Je m’en sers comme extraction de contenu.

Heroku

Mini-hébergement gratuit configurable et isolé. La mise en place est rapide et le https est déjà configuré.
La seule contrainte est que le serveur s’éteint automatiquement si il n’est pas sollicité et doit avoir 6h par jour de downtime. Nécessite des connaissances en développement et déploiement.
Je m’en sers comme déclencheur, traitement et sortie selon le besoin.


À tester : n8n

Une alternative gratuite (si hébergée) et open-source à Integromat : on y retrouve une interface où on peut lier des services web à d’autres sans code avec des taches régulières et des traitement de données en sortie.

À tester : Pipedream

Il me rappelle Kimonolabs avec une partie automatique et une partie développement.

À tester : RSSHub

Très proche de RSS-Bridge, c’est un service open-source qui génère un flux RSS depuis n’importe quel site. À héberger.

À tester : Ferret

Un framework en Go pour écrire facilement des scripts de scraping. Il supporte les sites dynamiques. Il est très prometteur avec sa syntaxe simplissime mais manque encore de quelques fonctionnalités.

À tester : Huginn

Un genre d’IFTTT avancé à héberger vous-même avec des outils de mesure et des réglages avancés. À manipuler dans son navigaeur. Il à l’air très prometteur. C’est un projet open-source en Ruby.

À tester : Pipes

Un outil qui propose de manipuler des données avec une interface de « programmation visuelle », tout comme le faisait Yahoo Pipes. C’est un outil en ligne.

À tester : Apify

Un service en ligne qui promet beaucoup et qui semble correspondre à mes besoins mais je ne sais pas si les données sont exploitables vers des « sorties » personnalisées.


Yahoo Pipes Fermé

Principalement dédié à la gestion de flux RSS il peut s’adapter au scrapping. C’est un outil en ligne un peu compliqué à prendre en main mais puissant, l’utilisation d’une interface pour gérer les enchaînements d’actions sur les flux est utile pour les novices. Pas mal de modificateurs que l’on peut chainer pour arriver à ses fins dans la transformation des données recueillies.
Intègre son gestionnaire d’événements (auto déclenchement).

Kimonolabs Fermé

Outil pour scrapper à l’aide d’un éditeur visuel en ligne pour sélectionner précisément la donnée à récupérer. Il m’a été utile pour remplacer Yahoo Pipes pendant un temps. La manipulation des données est plus poussée avec une partie à coder soi-même. Il propose un traitement des données via du Javascript donc très facile à personnaliser. Bon équilibre entre code et GUI.
Intègre son gestionnaire d’événements (auto déclenchement).

Non testé : Elastic.io

Outil orienté sur l’acquisition de clients.

Non testé : Automate.io

Un outil plutôt dédié à l’acquisition de données clients.

Non testé : node-red

Un outil pour manipuler des appareils et des services dans une interface graphique (qui ressemble à Yahoo Pipes) afin d’enchainer des actions. Manipulable dans son navigateur après l’avoir installé. C’est un projet open-source en Nodejs. Un peu trop orienté objets connectés/domotique pour mon usage.

Partagez l'article :FacebookTwitterEmail

HTML Vous pouvez utiliser ces balises HTML : <a> <b> <i> <code> <cite>