Quand je parle de mon métier et qu’est-ce que le SEO, les gens comprennent assez rapidement, ou font semblant. Une bonne structure de site, du bon contenu, des bons liens qui soutiennent le site. Parfois cela devient un peu plus technique et lorsque je commence à aborder le sujet de crawl, je perds toute attention…

Pourquoi crawler un site ?

Le crawl a commencé par un “mapping” du web et comment chaque sites étaient connectés entre eux. Le crawl était utilisé par les moteurs de recherche pour découvrir de nouvelles pages et les indexer. Les crawlers étaient également utilisés dans d’autres cas de figure notamment dans la sécurité pour tester si un site était vulnérable ou non.

Maintenant on peut trouver toute sorte d’outils qui peuvent crawler votre site et vous renseigner sur son état général. Par exemple, OnCrawl vous donne des informations sur le contenu et sur votre SEO onsite, Majestic quant à lui vous permet d’avoir des informations sur les liens qui pointent vers votre site.

Les crawlers sont utilisés pour collecter le contenu d’une page pour ensuite la traiter, la classer et fournir des informations.

Créer son propre crawler n’est pas une tâche difficile pour qui sait coder un minimum. Par contre, si vous voulez développer un crawler beaucoup plus performant cela devient plus technique.

Comment ça marche ?

Afin de crawler un site ou tout l’Internet, il faut un point d’entrée. Les robots ont besoin de savoir qu’un site existe afin de venir et de l’analyser. Quelques années en arrière, il fallait encore soumettre manuellement son site à un moteur de recherche afin de lui dire que votre site était en ligne. Maintenant il suffit de construire quelques liens et votre site sera repéré au bout d’un moment.

Une fois qu’un crawler arrive sur votre site, il analyse son contenu ligne par ligne et suit chaque liens qu’il trouve, qu’il soit interne ou externe. Il continue ainsi de suite jusqu’à ce qu’il arrive sur une page sans lien ou s’il rencontre une erreur comme une 404, une 403 ou une 500 par exemple.

D’un point de vue technique, un crawler fonctionne avec une liste initiale d’URL appelée “seed”. Cette liste est ensuite passée à un Fetcher qui récupère tout le contenu de chaque URL qu’il analyse. Ce contenu est ensuite redirigé vers un extracteur de lien qui récupère chaque lien de la page. Ces URLs sont d’une part stockées et d’autre part soumises à un filtre qui renvoi les URLs intéressantes à un module URL-Seen. Ce module détecte alors si l’URL envoyée a déjà été vue ou non. Si ce n’est pas le cas elle est envoyée au Fetcher qui va récupérer le contenu de la page et ainsi de suite.

Il faut garder à l’esprit que certains contenus ne peuvent pas être crawlé par des robots comme le Flash. Le Javascript quant à lui est crawlé par GoogleBot, mais il arrive que parfois il décide de ne pas crawler un contenu Javascript. Les images sont également des contenus que les robots ne peuvent pas crawler, mais Google est de plus en plus intelligent et arrive à “comprendre” de quoi elles parlent.

Si l’on ne donne pas de consigne à un robot celui-ci va crawler tout ce qu’il peut. C’est là que le fichier robots.txt devient utile. Il va spécifier aux robots (des consignes peuvent être spécifiques à chaque robots comme GoogleBot, MSN Bot – il existe toute une liste de robots existants ici) quelles pages ils ne peuvent pas crawler. Disons que vous avez une navigation à facette, vous ne voulez pas que qu’ils crawlent toutes les facettes de la navigation, car certaines n’auront pas de valeur ajoutée contrairement à d’autre. Cela va utiliser beaucoup de budget de crawl pour rien. En utilisant cette simple ligne vous déclarerez aux robots de ne pas visiter les pages que vous souhaitez:

User-agent: *
Disallow: /folder-a/
Cela spécifie aux robots de ne pas crawler le dossier A
User-agent: GoogleBot
Disallow: /repertoire-b/
Cela spécifie uniquement à GoogleBot de ne pas crawler le dossier B

Vous pouvez également spécifier aux robots que vous ne souhaitez pas qu’ils suivent les liens qui vont vers certaines pages en utilisant le rel=”nofollow”. Cependant, certains tests ont montré que le GoogleBot suivait quand même ces liens. Cela est contradictoire avec son utilisation de base, mais les liens NoFollow ont d’autres applications utiles.

Qu’est-ce que le budget de crawl ?

Votre site a récemment été découvert par un moteur de recherche. Les robots viennent souvent pour mettre à jour leurs données et voir si vous avez fait des modifications ou si vous avez créé de nouvelles pages. Chaque site a son propre budget de crawl. Le quota dépend notamment du nombre total de page de votre site et de la bonne santé de votre site (notamment s’il y a beaucoup d’erreurs ou non). Vous pouvez avoir un bon aperçu de votre budget de crawl en vous connectant à votre Search Console.

Votre budget de crawl fixe le nombre de page que le robot va crawler à chaque passage. Il est proportionnellement lié au nombre total de vos pages et le nombre de page qu’il a déjà crawlé. Certaines pages sont plus souvent crawlées que d’autres en particulier si elles sont mises à jour souvent ou si elles reçoivent des liens de pages importantes.

Par exemple votre page d’accueil est un point d’entrée de votre site qui sera souvent crawlé. Une page de catégorie sera également souvent crawlée si elle est liée directement depuis la navigation principale. Un blog quant à lui sera souvent crawlé, car son contenu est régulièrement mis à jour. Un article de blog, lui, sera aussi souvent crawlé au début quand il aura été publié, mais après quelques mois il ne sera probablement plus mis à jour et de ce fait moins crawlé.

Plus une page est crawlée par un robot plus elle considérée comme importante à ses yeux par rapport à d’autres pages. C’est à ce moment que vous devez vous pencher sur l’optimisation de votre budget de crawl.

Optimiser son budget de crawl

Pour optimiser son budget de crawl et s’assurer que vos pages importantes reçoivent l’attention qu’elles méritent, vous pouvez analyser vos logs serveur et voir comment un robot crawle votre site:

  • A quelle fréquence sont crawlées vos pages importantes ?
  • Des pages moins importantes sont-elles crawlées plus qu’elles ne le devraient ?
  • Les robots rencontrent-ils souvent des erreurs 4xx ou 5xx lors de leur crawl ?
  • Les robots se heurtent-ils à des spider traps ? (Matthew Henry a écrit un très bon article à ce sujet)

En analysant vos logs vous pourrez voir si des pages que vous considérez comme peu importantes sont souvent crawlées. Il faudra alors creuser dans votre structure de maillage interne. Si une page est souvent crawlée, c’est qu’elle doit recevoir beaucoup de liens.

Vous pouvez également résoudre les erreurs (4xx ou 5xx), en utilisant OnCrawl notamment, afin d’aider à améliorer la crawlabilité de votre site ainsi que l’expérience utilisateur.

Crawl VS Scrap

Crawler et scraper sont deux choses distinctes à des fins différentes. Crawler un site c’est arriver sur une page, extraire tous les liens et les suivre.

Scraper a pour objectif de récupérer un contenu spécifique d’une page: balise title, meta description, balise h1 ou une partie plus précise comment une liste de prix. Un scraper aura plutôt tendance à se faire passer pour un humain, ignorer les règles du robots.txt, remplir et soumettre des formulaires et utiliser le user-agent d’un navigateur pour ne pas être détecté.

Les crawlers des moteurs de recherche agissent également comme des scrapers dans le sens où ils ont également besoin de récupérer le contenu d’un site afin de le traiter via l’algorithme de ranking. Contrairement aux scrapers, ils ne cherchent pas un contenu spécifique, mais bien tout le contenu à disposition et même plus (le temps de chargement d’une page par exemple). Les robots des moteurs de recherche s’identifient toujours en tant que robot afin de permettre au propriétaire du site de savoir quel robot est passé et à quel moment. Cela devient utile lorsque vous souhaitez suivre toutes interactions sur votre site.

Maintenant que vous en savez plus sur le crawl, son fonctionnement et son importance il ne vous reste plus qu’à commencer à analyser vos propres logs. Cela vous donnera des précisions sur l’interaction des robots avec votre site, qu’elles pages sont considérées comme importantes et quelles sont les erreurs rencontrées lors du crawl.

Pour ceux qui veulent pousser un peu plus loin sur l’histoire des crawlers web je vous recommande “A Brief History of Web Crawlers”