Si vous suivez ce blog depuis plusieurs années, vous connaissez probablement déjà Node-Red, un logiciel Opensource développé par IBM qui permet d'automatiser des tâches sans faire de développement (Low Code).

🕸️ Pourquoi créer un robot de Web Scraping ?

L'utilisation d'un robot de Web Scraping peut être utilisé pour répondre à plusieurs besoins :

  • Vérifier la disponibilité d'un produit sur un site de eCommerce (ex: PS5).
  • Vérifier la disponibilité de date pour un rendez-vous.
  • Vérifier la présence d'une erreur sur un site (supervision).
  • Vérifier la baisse du prix / réduction sur un produit.
  • Vérifier la mise en ligne d'un nouveau site.
  • ... etc.

🤖 Comment créer un robot sur Node-Red ?

Pour créer un robot de Web Scrapping, 5 composants sont nécessaires dans la pipeline à construire :

  • Un composant de type "Inject" avec une répétition programmée qui permettra de déclencher le traitement à fréquence constante : toutes les minutes, 2 minutes, 5 minutes ...
  • Un composant de type "HTTP Request" pour appeler la page ou la ressource sur le Web que vous voulez vérifier.
  • Un composant de type "Switch" pour vérifier le code HTTP (StatusCode) retourné par la ressource.
  • Un composant de type "Switch" pour vérifier le contenu de la page Web ou de la ressource sur le Web.
  • Un composant de notification pour vous informer du changement de statut de la page Web : Envoi de SMS, Diffuser un message sur le Google Home, envoi d'un email ...

node-red-web-scrapping

🟥 Exemple de node flow pour Node-Red

Voici un export d'un pipeline de Web Scrapping que vous pouvez facilement importer dans Node-Red via la fonction "import" disponible dans le menu du logiciel.

[{"id":"d187902e.a2762","type":"inject","z":"36f091fb.d7594e","name":"Toutes les minutes","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":1300,"wires":[["b2c7d89.c3d7c28"]]},{"id":"b2c7d89.c3d7c28","type":"http request","z":"36f091fb.d7594e","name":"Appel au site Internet","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://www.perdu.com","tls":"","persist":false,"proxy":"","authType":"","x":300,"y":1360,"wires":[["bb2ea8a0.510d58"]]},{"id":"bb2ea8a0.510d58","type":"switch","z":"36f091fb.d7594e","name":"Check status code","property":"statusCode","propertyType":"msg","rules":[{"t":"eq","v":"200","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":450,"y":1300,"wires":[["b539bbbd.054858"],["5660d8bc.fe3158"]]},{"id":"b539bbbd.054858","type":"switch","z":"36f091fb.d7594e","name":"Check page content","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"perdu","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":680,"y":1240,"wires":[["80912129.701af"],["82d4ec32.8d223"]]},{"id":"82d4ec32.8d223","type":"debug","z":"36f091fb.d7594e","name":"Pas le contenu recherché","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":910,"y":1280,"wires":[]},{"id":"5660d8bc.fe3158","type":"debug","z":"36f091fb.d7594e","name":"Code HTTP en erreur","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":680,"y":1360,"wires":[]},{"id":"80912129.701af","type":"e-mail","z":"36f091fb.d7594e","server":"smtp.gmail.com","port":"465","secure":true,"tls":true,"name":"","dname":"","x":850,"y":1220,"wires":[]}]

Ce type de robot de Web Scrapping est à utiliser avec parcimonie bien sûr, il entrainera des coûts sur le serveur que vous appellerez si vous vérifiez un changement de contenu de manière trop fréquente. Soyez vigilant dans son usage.

Quels sont les autres usages possibles avec Node-Red ?

J'utilise aujourd'hui Node-Red pour la domotisation de ma maison, voici un certain nombre d'articles que j'ai consacré sur le sujet :

N'hésitez pas à allez faire un tour dans la rubrique Domotique du blog si la domotique vous intéresse et à rejoindre le serveur Discord Geeek pour discuter Domotique !