Captain Scraper

Captain Scraper

24 décembre 2016

On a tous déjà été dans un projet où l'on s'est dit : Zut, j'aimerais beaucoup récupérer les données qui sont accessibles publiquement sur ce site web, malheureusement ils ne proposent pas d'API ! Alors dans cette situation, que diriez vous de développer votre propre scraper ?

Wait, c'est quoi un scraper ?

Un scraper ou crawler est un robot qui va parcourir des pages web afin de collecter certaines informations. Par exemple, vous cherchez à acheter une voiture d'occasion sur Le Bon Coin. Cependant vous êtes quelqu'un de très occupé et vous n'avez pas le temps de regarder les nouvelles annonces tous les jours... Pas de soucis ! Vous n'avez qu'à créer un scraper, qui regardera toutes les heures les nouvelles annonces sur Le Bon Coin avec vos critères, et qui vous enverra automatiquement une notification par e-mail lorsqu'une annonce correspondra à votre besoin. Vous faites une application ou l'on note des films ? Allez scraper IMDB pour récupérer la liste complète des films existants !

CaptainScraper, comment ça marche ?

CaptainScraper vous permet de télécharger des pages web. Pour chaque page chargé vous pouvez choisir un parser parmi ceux que vous avez créés. Un parser vous permet d'analyser la page et d'y extraire les informations qui vous intéressent, les liens vers d'autres pages à charger ou des données. Le système de parsing se base sur les sélecteurs de jQuery, donc très simple à apréender.

Le scraping d'un gros site web peut parfois devenir exponentiel en matière de quantité de pages à charger. Par exemple, sur un site d'e-commerce, vous chargez des pages catégories, pour chaque page catégorie vous obtenez le lien de 10 sous-catégories, pour chaque sous-catégories vous avez 50 pages de pagination, pour chaque page vous obtenez 60 pages produits. Votre serveur risque de se retrouver sous l'eau. CaptainScraper vous libère de cette problématique en créant des files d'attentes gérées automatiquement et qui sont stockées dans une base de données temporaire créée avec MongoDb. Vous pouvez configurer vous-même la vitesse de chargement des pages, les pages non chargés sont mis en file d'attente.

CaptainScraper gère automatiquement les cookies comme un navigateur le ferait et est capable de remplir pour vous des formulaires web. Cela permet de s'identifier sur un site pour accéder à des données qui ne sont visibles qu'en étant connecté.

Enfin, CaptainScraper est utilisable avec Docker pour vous éviter d'avoir à installer la bonne version de NodeJs, MongoDb et tout le tralala ! Merci Docker !

Dernier détail, pour plus de confort le code de CaptainScraper s'écrit en TypeScript. Cela veut dire que vous pouvez utiliser des class, de l'héritage, des types etc... C'est quand même un gros avantage quand l'on veut faire du beau code.

Voir CaptainScraper sur Github