Crowl est un projet de développement d’un crawler SEO collaboratif sous licence GPL v3. Développé en Python et basé sur le cadriciel Scrapy, Crowl a pour but de fournir aux professionnels du référencement un outil simple, robuste et innovant pour répondre à des besoins non couverts par les outils actuels.
À quoi sert un crawler SEO ?
Crawler, spider, scraper ou robot d’indexation : quel que soit le nom qu’on leur donne, de nombreux robots parcourent le Web et réalisent différentes tâches. La plupart du temps, il s’agit de récupérer des informations sur les pages Web et de les stocker.
Pour les professionnels du SEO, le modèle est Googlebot : la famille de robots d’indexation de Google. Ces robots parcourent chaque jour des dizaines de milliards de pages Web. Mais les besoins d’un moteur de recherche ne sont pas les mêmes que ceux d’un référenceur : là où le premier doit parcourir le Web dans son intégralité, le second cherche à optimiser un seul site (à la fois).
Les informations récupérées sont variables, mais on s’intéressera au statut HTTP des pages, à leur contenu ou encore aux liens qui les relient. Ces informations permettent ensuite de réaliser différentes analyses et de définir les chantiers d’optimisation du site concerné. Il peut s’agir de problèmes simples (liens cassés, redirections inutiles, pages dupliquées…) ou d’analyses plus complexes (répartition de la popularité interne, pertinence du contenu…).
Yet another crawler?
De nombreux outils existent sur le marché, mais la plupart sont commerciaux ou obsolètes. Par ailleurs, ils sont souvent limités d’une manière ou d’une autre dans leur fonctionnement. Bon nombre sont limités quant au volume de pages à traiter, ou aux informations qu’il est possible de récupérer.
Ainsi, il n’est pas rare que des référenceurs se lancent dans la conception d’un crawler pour dépasser ces limitations. Malheureusement, ce sont souvent des initiatives isolées, et « crawler » le Web n’est pas aussi simple qu’il n’y paraît.
Au fil de discussions avec quelques confrères, nous avons réalisé que nous étions plusieurs à travailler sur les mêmes problématiques en parallèle. Afin de mettre nos efforts en commun, nous avons décidé de lancer un projet open source, dans l’espoir d’attirer d’autres contributeurs.
Comment fonctionne Crowl
Crowl est basé sur Scrapy, un cadriciel Python qui permet d’extraire facilement des données depuis les sites Web. C’est une excellente base de départ, d’autant plus que Python est un langage facile d’accès et déjà utilisé par de nombreux référenceurs, notamment pour ses capacités en science des données. Cependant, Scrapy n’est pas pensé pour répondre aux besoins d’un crawler SEO et demande un certain nombre de configurations et d’adaptations.
En l’état, Crowl propose donc un projet Scrapy configuré pour les besoins génériques des référenceurs. Il est capable de parcourir l’intégralité d’un site Internet et de stocker les informations utiles dans une base de données MySQL.
Nous proposons en outre une méthode de calcul du poids des liens sortant d’une page Web, basée sur leur hauteur respective dans le code source. Ceci permet le calcul d’un PageRank interne plus précis, car les liens en pied de page sont ainsi dévalués.
Feuille de route et perspectives
Si l’outil est déjà opérationnel, il reste très basique pour l’instant. Nous avons déjà de nombreuses idées pour l’améliorer, qui seront mises en place au fil du temps et de la disponibilité des contributeurs.
Parmi ces idées, on peut citer le choix de multiples options de sauvegarde des données en plus de MySQL, la configuration des options au moyen d’un fichier de configuration, ou encore la création d’une interface utilisateur pour lancer les crawls et en analyser les résultats.
L’objectif est de séparer les principales fonctionnalités en une suite de modules indépendants pour traiter :
- le crawl en lui‐même ;
- les traitements post‐crawl ;
- les interfaces de lancement et d’analyse d’un crawl.
Toute contribution est la bienvenue, y compris de la part de personnes qui ne sont pas issues du milieu du SEO : les contributeurs actuels n’étant pas des développeurs professionnels, nous sommes preneurs des conseils de personnes plus aguerries.
Aller plus loin
- Site officiel de Crowl (1552 clics)
- Dépôt GitLab (331 clics)
- Site du cadriciel Scrapy (258 clics)
# bravo
Posté par abriotde (site web personnel, Mastodon) . Évalué à 1.
Très belle initiative.
Sous licence Creative common. Lisez, copiez, modifiez faites en ce que vous voulez.
[^] # Re: bravo
Posté par Julien Deneuville (site web personnel) . Évalué à 2.
Merci :-)
[^] # Re: bravo
Posté par voxdemonix . Évalué à 2. Dernière modification le 31 août 2018 à 12:45.
Youpee, encore un énième scrapy qui va bouffer nos ressources pour permettre à d'autres de se faire de l'argent sur notre dos.
Et comme la plus part des trucs basé sur scrapy, le robot.txt à l'air d'être un truc OSEF.
J'espère que vous avez au moins mis un user-agent par défaut histoire qu'on puisse bloquer les plus noobs.
[^] # Re: bravo
Posté par Julien Deneuville (site web personnel) . Évalué à 7.
Bonjour,
Youpee, Crowl respecte par défaut le robots.txt !
Youpee, Crowl possède par défaut un user-agent spécifique !
Youpee, le but d'un crawler SEO c'est d'analyser un site pour le faire progresser et donc de vous faire gagner plus d'argent !
Bonne journée ;)
# Quelles sont les informations utiles ?
Posté par LeBouquetin (site web personnel, Mastodon) . Évalué à 4.
J'avais testé des outils en mode SAAS permettant de faire ce travail et donc de proposer des pistes d'amélioration, de détecter des faiblesses, etc.
Quelles sont les informations utiles remontées par Crowl ?
Je ne suis pas certain de comprendre ce paragraphe (le "poids des liens sortant" m'induit peut-être en erreur). Ce que fait Crowl, c'est de calculer le PageRank des pages internes en fonction de la position des liens qui pointent vers cette page ? Genre si j'ai un lien "créer un compte" dans le header et que ce bouton pointe vers la page "/account/new", cela donnera un bon PageRank à la page de création de compte, ce qui permet de déterminer si les pages que l'on doit mettre en valeur sont bien celles qui sont effectivement mises en valeur. C'est bien ça ?
#tracim pour la collaboration d'équipe __ #galae pour la messagerie email __ dirigeant @ algoo
[^] # Re: Quelles sont les informations utiles ?
Posté par LeBouquetin (site web personnel, Mastodon) . Évalué à 5.
J'avais prévu de compléter le commentaire précédent suite à mes tests, mais finalement, comme j'ai testé en même temps OpenDBViewer 1.1.0 le résultat a pris la forme d'un journal qui relate mes manipulations Crowl & OpenDBViewer.
#tracim pour la collaboration d'équipe __ #galae pour la messagerie email __ dirigeant @ algoo
[^] # Re: Quelles sont les informations utiles ?
Posté par Julien Deneuville (site web personnel) . Évalué à 2.
Bonjour et merci pour ce retour d'expérience.
L'outil est encore à un stade peu avancé, et nous avons quelques éléments à régler (dont l'affichage plus clair de la base de données créée).
Les données collectées pour l'instant sont celles que l'on trouve dans la base de données, comme expliqué dans votre journal :-)
Nous ajouterons bientôt de nouvelles informations, ainsi qu'un export en CSV pour que ceux qui le souhaitent puissent se passer de MySQL.
Concernant le PageRank, Crowl n'en effectue pas le calcul, mais collecte les données nécessaires pour le faire. Il "suffit" ensuite de créer un graphe du site parcouru à l'aide de la table des liens, pour ensuite calculer le PageRank. Des librairies, comme iGraph ou Networkx en Python par exemple, permettent de le faire en quelques lignes de code. Et ce calcul peut se faire de manière simple (tous les liens ayant le même poids) ou en pondérant les liens (d'où le calcul d'un poids, ici basé sur la hauteur du lien dans le code source de la page source).
[^] # Re: Quelles sont les informations utiles ?
Posté par steph1978 . Évalué à 5. Dernière modification le 31 août 2018 à 10:52.
Le pagerank repose grossomodo sur le nombre de pages pointant vers la page considérée. Là ils introduisent un pondération partant du principe que plus ce lien est bas dans la page source moins ce poids est important.
Exemple, si toutes les pages d'un site ont en bas de page un lien vers la page "contact", le pagerank de la page "contact" est très élevé. Mais avec cette pondération, comme ce lien est en bas, le pagerank est réduit.
Il y aussi une approximation qui dirait que bas de page est environ lié à fin de code source bien que en pratique, CSS et JS peuvent rompre ce lien.
[^] # Re: Quelles sont les informations utiles ?
Posté par Julien Deneuville (site web personnel) . Évalué à 1.
C'est exactement ça :-)
# Problème avec python 3.7?
Posté par Panhwein . Évalué à 1. Dernière modification le 03 septembre 2018 à 19:22.
Bonjour,
Je suis assez intéréssé par votre project et j'aimerai bien contribuer, cependant je n'arrive pas a le faire tourner.
A l'installation des dépendances python, reppy 0.4.9 génère des erreurs lors de la compilation(gcc 8.2).
J'ai donc installé la dernière version à la place.
Et au lancement de crowl, scrappy démarre bien mais twisted n'a pas l'air content du tout!
Une idée pour régler ça?
(Je suis sous manjaro)
[^] # Re: Problème avec python 3.7?
Posté par nigaiden . Évalué à 1.
Il s'agit d'une incompatibilité de version comme tu l'as constaté. Le fil de discussion suivant propose deux workarounds (côté twisted ou bien côté scrapy): https://github.com/scrapy/scrapy/issues/3143
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.