Le web est une immense base de données et d’informations (dont le rapport signal/bruit pourrait être grandement amélioré) ainsi qu’un système de navigation permettant d’explorer ces informations, construit au-dessus de l’Internet. Les informations sont contenues dans des pages web (organisées en sites web) et les utilisateurs peuvent naviguer d’une page à l’autre en suivant les liens hypertextes. Ce n’était qu’une question de temps avant que des mécanismes de collecte à grande échelle de ces données apparaissent que l’on commence exploiter cette mine d’information. La première utilisation étant les moteurs de recherche pour réaliser l’indexation du web. Le crawl du web, ou web crawling, consiste simplement à télécharger des pages web. En fonction de la finalité, cette tache peut également être appelé web scraping.
Architecture basique d’un crawler web
Il serait assez fastidieux de devoir alimenter un crawler web avec les URL des pages à récupérer une par une (URL signifie Uniform Resource Locator, autrement dit une adresse sur le web). Un crawleur web basique inclut un mécanisme pour découvrir automatiquement des URL dans les pages qu’il télécharge. Il s’auto-alimente ainsi en url et parcours l’Internet en suivant les liens hypertextes découverts pour récupérer leur contenu. Ces crawlers web sont connus sous le nom de bot web (ou robot web), ou simplement bot, ou encore spider (par analogie avec une araignée se déplaçant dans sa toile).
En plus d’un module de découverte d’URL, voici les modules généralement présents dans une architecture de bot basique :
- Priorisation : chaque page web contient généralement une grande quantité de liens hypertextes et la taille de l’ensemble des URL récoltées pendant l’exploration croît donc de manière exponentielle. Cependant, toutes les URL extraites d’une page donnée ne sont pas pertinentes et il est crucial de pouvoir identifier les plus pertinentes. Un processus d’exploration intelligent utilise les données intrinsèques d’une page (taille, thématique, langue, meta-données) et des métriques calculées sur le graphe du web pour orienter le processus de priorisation. La stratégie choisie influence également le type d’exploration effectué : on peut privilégier la profondeur pour obtenir davantage d’informations sur un site unique ou opter pour une exploration plus large.
- Limitation et budget d’exploration : le téléchargement de toutes les pages d’un même site peut avoir un impact non négligeable sur le fonctionnement dudit site et pour réduire l’impact du crawl il est possible de mettre en place des limites afin de s’assurer que les ressources d’un site ne sont pas monopolisées par le crawler. D’une manière symétrique, un bot ne peut pas consacrer toutes ses ressources à un site donné. Limiter le temps passer sur un même site permet aussi d’éviter qu’un bot ne soit piégé dans une boucle de lien. Pour cela, un budget d’exploration est alloué et l’exploration du site se termine lorsque le budget est consommé. Dans les deux cas, ces limites vont influencer l’algorithme de priorisation mentionné précédemment.
- Gestion des index : un bot ne veut pas explorer les mêmes pages plusieurs fois, du moins pas avant un certain délai, et il doit donc savoir quelles pages il a déjà explorées et quand il doit les explorer à nouveau. La politique de recrawl est également liée au budget d’exploration mentionné ci-dessus. Comme pour l’algorithme de priorisation, elle doit utiliser les données collectées et les métriques pour déterminer si un site (ou l’une de ses pages) doit être récupéré de nouveau ou avec quel délai.
Identification d’un crawler web
Tous les crawleurs lorsqu’ils accèdent aux pages d’un site s’identifient auprès du serveur web grace à un user-agent, qu’il s’agisse d’un navigateur web ou d’un bot. Par exemple, celui du crawler de google, GoogleBot a pour user-agent : Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html). Le crawler SEO de babbar a pour identifiant barkrowler.Le user-agent donne des informations sur l’appareil : type, version, plateforme ou spécificités. Pour un bot, il renvoie généralement à une page d’information ou à une adresse email pour signaler des abus. Chaque bot devrait avoir son propre user-agent, mais il est libre de spécifier n’importe quel user-agent, même celui d’un navigateur existant.
Le bonnes pratiques pour crawler un site
Même si vous accédez à des ressources publiques trouvées via des URL tout autant publiques, cela ne signifie pas qu’il est légitime de tout récupérer, ni qu’il faut le faire sans considération pour le site web. Il n’existe pas de règles strictes à ce sujet (sauf le rgpd en Europe), mais plutôt un code de conduite informel définissant les bonnes pratiques. L’un des éléments les plus importants de ce code est le fichier robots.txt.
Le fichier robots.txt est situé à la racine d’un site web et contient des instructions sur l’accès aux ressources du site. Il peut interdire totalement ou partiellement l’accès à un ou plusieurs user-agents ou imposer un rythme d’exploration plus lent. Les bots autres que ceux des moteurs de recherche célèbres sont souvent perçus comme une charge pour les sites web donc respecter le fichier robots.txt est essentiel pour que le crawl d’un site soit toléré. Cela implique également qu’un bot utilise un user-agent dédié et n’essaie pas d’usurper celui d’un navigateur existant. A propos du fichier robots.txt, on peut voir cette documentation sur le site pour développeur de google.
Une erreur courante à ne pas faire, c’est d’indexer un site aussi vite que possible. Les petits sites disposent souvent de ressources dimensionnées par rapport à leur charge habituelle alors le résultat d’une utilisation soudaine et intense due à un outil d’indexation sera probablement une interdiction permanente.
Les types de bots web et exemples
Voici quelques-uns des types de bots les plus courants que l’on peut rencontrer dans les journaux d’un site web :
- Bots des moteurs de recherche : ce sont les bots les plus célèbres. Ils réalisent l’indexation du web pour alimentent les moteurs de recherche en données. Chaque moteur de recherche a son propre robot dédié. Parmi les plus notoires, on peut citer ceux de google ou de bing : GoogleBot et BingBot.
- Bots IA : ces bots la sont relativement récents et sont souvent cités dans des controverses récentes sur l’IA et la vie privée. Un bot IA explore le web pour constituer des ensembles de données d’entraînement pour des modèles (comme les LLM). GPTBot d’OpenAI en est un exemple. Il existe également des bots IA utilisés pour la recherche d’information, comme AppleBot, qui alimente Siri.
- Bots SEO (Search Engine Optimization) : Le seo s’intéresse davantage à la structure du graphe du web plutôt qu’à son contenu, c’est-à-dire aux liens hypertextes qui relient les pages web entre elles et aux métriques calculées sur le graphe comme le pagerank de google et tous les dérivés actuels. L’objectif de ces bots, et du seo, est d’étudier le référencement des sites web Le crawler seo de Babbar, Barkrowler, en est un exemple notable.
- Bots de publicité et de marketing : tels que Google AdsBot, ces bots réalisent également une indexation du web, mais d’une manière plus ciblée (ils peuvent se limiter a la page d’accueil d’un site par exemple. Ces robots sont spécialisés pour affiner les services publicitaires en fournissant des informations récentes et précises sur les sites web afin de mieux cibler les campagnes marketing ou bien pour réaliser un audit d’une compagne web.
Notre liste d’outils pour écrire son propre robot
Télécharger un page web est à la portée de tout le monde et il existe de nombreuses bibliothèques permettant de faire des requêtes http mais comme nous l’avons vu plus haut, de nombreux modules sont nécessaires pour obtenir un crawler. Heureusement, un certain nombre d’outil open-source sont disponibles pour réaliser son propre crawleur (et il en existe des commerciaux également). Parmi les outils libres, on peut citer :
- nutch de la fondation apache, en java.
- Scrapy un scrapper assez simple a utiliser en python
- Heritrix. Cet outil est utilisé par « Internet Archive’s » et est plutôt destiné à l’archivage du web.
- BUbiNG, en java, développé par l’université de Milan
Les questions que vous vous posez sans doute à propos du crawl du web !
- Comment les moteurs de recherche utilisent-ils les crawlers pour explorer les pages web ? Les moteurs de recherche ont constamment besoin de rafraîchir leur index afin de prendre en compte les mises à jour de contenu, les apparitions de nouveau contenu et les disparitions également. Les moteurs de recherches utilisent les crawlers web pour parcourir inlassablement le web afin de fournir les meilleures réponses possibles a chaque recherche utilisateur.
- Quel rôle jouent les robots d’indexation dans le référencement SEO ? Le référencement d’un site web est dépendant d’informations qui ne sont accessibles qu’en crawlant l’Internet, comme obtenir la liste des liens entrant d’un site Internet ou bien calculer les métriques de chaque page d’un site. Ces donnes sont primordiales et leur mise à jour régulière également afin de pouvoir controller sa stratégie seo.
- Comment les crawlers identifient-ils et suivent-ils les liens entre les pages web ?Les liens entre les pages web sont les liens hypertextes présent sur une page. Ils peuvent être absolus ou bien relatifs quand il s’agit de lien interne. Il existe des regex qui permette d’extraire des urls d’une texte. Il faut noter que la position d’une url dans une page et le texte du lien sont également important pour évaluer le lien.
- Comment un fichier robots.txt peut-il influencer le crawling des robots sur un site web ? Le fichier robots.txt permet de restreindre la liste des ressources qui sont accessibles à certains identifiants (user-agent) afin d’éviter que certaines parties d’un site soient référencées. Il est également possible de fournir des instructions aux crawlers comme un délai minimal a respecter entre le crawl de deux pages sur un même site. En cas de nécessité, il est aussi possible de bannir entièrement un crawler mais il faut encore que celui-ci se présente sous son vrai nom.
- Que peut-on apprendre en analysant les données de crawl d’un site web ?L’analyse du crawl d’un site web permet d’extraire de nombreuses informations comme le maillage interne d’un site, la sante http du site (si il existe des liens morts), la thématique du site et le focus sémantique des pages du site (c’est-a-dire la proximité sémantique de chaque page avec le reste du site), etc. En ayant accès a d’autres sources d’information, on peut également les métriques du site, sa proximité avec d’autres sites, les liens entrant et sortant.
- Comment les crawlers traitent-ils les contenus dynamiques des pages web ? Les contenus dynamiques ne sont pas forcement pris en compte car ils demandent plus de ressources que pour une page html statique. Néanmoins, des crawleurs peuvent émuler un navigateur afin d’interpreter le contenu avec des navigateurs « headless ». A titre d’exemple, google propose pour avec son navigateur chrome un mode headless
- Quelle est la fréquence idéale de crawl pour les pages web d’un site ? La fréquence idéale est difficile à définir car elle depend de la finalité d’un crawl. Il ne faut pas dépasser quelques semaines de préférence afin de conserver l’information la plus fraîche possible. Il ne faut pas non plus le faire plus rapidement que ne le ferait un moteur de recherche.
- Quelles précautions prendre pour éviter le scraping de données sur un site web ? Pour éviter le scrapping, la méthode la plus simple est d’utiliser le fichier robots.txt. Si un crawler ne le respecte pas, alors il est possible de bloquer les IPs de ce crawler, si elle sont disponibles. De nombreux outils permettent une protection en gérant à votre place des listes noires. Malheureusement, ces systèmes préfèrent souvent bloquer un peu rapidement des sites signalés abusivement comme spammeurs.