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.
Alors entre un scraper et un crawler il y a des usages bien différents mais je citerai aussi en vrac d’autres logiciels SEO pas Open Source mais qui valent le détour comme RDDZscraper, Oncrawl, Hextrakt…
Oui, c’est vrai , un crawler ce n’est pas un scraper, même si bien souvent le crawler permet au final de scraper de la donnée.
J’en ai testé de votre liste aussi. Oncrawl j’adore, ils ont fait d’énormes progrès depuis leur début, et leur outil permet d’analyser un site vraiment en profondeur.
En revanche RDDZ, je n’ai jamais réussi à dégager des trucs intéressants, et l’interface est un peu rebutante (limite on dirait du scrapebox).
Hextrakt, m’est complètement inconnu par contre.