Site icon Game And Me

Scrapy le meilleur scrapeur open-source

Lorsque vous cherchez à scraper des sites, de multiples solutions s’offrent à vous. Vous avez les scrapers de base en mode logiciels tels que Screaming Frog (le meilleur d’après moi, et un SAV de ouf), ou encore Xenu LinkSleuth, Httrack… Mais si votre projet est de construire votre scrapeur personnel, (car vous devez ajouter des règles hyper spécifiques) alors le choix se portera sur d’autres critères. Voila un petit résumé des solutions que j’ai testé.

PHP Crawl:

Le crawler est assez simple à mettre en place, il fonctionne sur toutes les plateformes PHP , mais de mémoire le multithread ne fonctionne que sous Linux. Malheureusement, la vitesse n’est pas son fort.

mnoGoSearch:

Solution assez rapide qui n’est plus maintenu depuis 2015. Des librairies obsolètes sont utilisées. Pour moi, il vaut mieux passer votre chemin.

OpenSearchServer:

Solution Java qui nécessite de faite tourner un Tomcat, avec un paramétrage relativement compliqué. Je n’ai pas réussi à en tirer grand chose.

Autres :

Diverses solutions trouvées ici: http://bigdata-madesimple.com/top-50-open-source-web-crawlers-for-data-mining/
N’étant pas super à l’aise avec l’implémentation d’un serveur web Java/C, vous verrez que la liste se vide rapidement 🙁

Scrapy:

Ce scrapeur Python est disponible en ligne de commande ou en API et est fortement recommandé par la communauté. Pour moi, le mode API est difficilement exploitable en mode web, car il n’est pas possible d’instancier plusieurs crawls en parallèle (une histoire de Reactor), et il n’y a pas de mode pause. Mais il a l’avantage de pouvoir modifier son fonctionnement assez facilement. Vous avez un fichier spider que vous pouvez modifier à votre guise pour lui ajouter un certain nombre de paramètres. Il a nativement un système de DupeCheck pour éviter de scraper 2 fois la même page. De mon coté, je lui ai rajouté les règles métiers du SEO à savoir : recherche des Hn, scrap du contenu en fonction de règles Xpath lié au site crawlé, le non crawl des ressources non textuelles, le crawl du site intégral, ainsi que la gestion des canonicals

Résultat, le scrapeur fonctionne bien (trop bien même, car il m’est arrivé de faire tomber des sites avec). J’ai donc du lui rajouter un système de pause/reprise et de maximum de pages par secondes. Mais les résultats sont là ! Python est bien plus rapide que PHP pour gérer ce type de problématique.

Je vous invite donc fortement à vous tourner vers cette solution.

 

Quitter la version mobile