Scraping, parsing et crawling : quelles différences ?

Scraping, parsing et crawling : en quoi ces processus diffèrent, comment ils s'articulent et pourquoi on confond sans cesse les termes.

ÉW
Équipe Web-Scraping.fr
Collecte de données pour votre activité
Publié le: 5 mai 2025

Ces trois mots apparaissent constamment côte à côte, et on les emploie régulièrement comme synonymes. En réalité, ce sont trois processus différents, qui répondent à des besoins différents et qui, le plus souvent, travaillent ensemble — comme les maillons d'une même chaîne. Examinons-les un par un, voyons comment ils s'articulent, et parlons des problèmes typiques de chacun.

En version ultra-courte :

  • Le crawlingtrouve les pages (il suit les liens).
  • Le scrapingrécupère les données voulues sur la page.
  • Le parsingdécompose le texte/balisage brut en une structure exploitable.

Le parsing

Le parsing, c'est l'analyse de données selon des règles définies et leur transformation d'un état « brut » vers un état structuré.

Le mot vient de l'informatique, où le parseur est le composant qui lit une séquence de caractères (par exemple le code source d'un programme, du JSON, du XML ou du HTML) et en construit une structure compréhensible par la machine : un arbre, un objet, un ensemble de champs.

Exemple simple. Nous avons une chaîne HTML :

html
<div class="price">1 299 €</div>

Le parseur la transforme en arbre d'éléments (DOM), dans lequel on peut « circuler » et demander : « donne-moi le contenu de l'élément de classe price ». En sortie, nous n'avons plus une suite de caractères mais une valeur intelligible, 1 299 €, dont on peut ensuite tirer le nombre 1299.

Important : le parsing en lui-même ne télécharge rien depuis Internet. Il travaille sur un texte déjà disponible. On peut parser un fichier local, la réponse d'une API ou une chaîne reçue dans un message. Le parsing concerne la structure, pas la source.


Le scraping

Le scraping (web scraping), c'est l'extraction de données précises depuis des pages web.

Un scraper fait deux choses :

  1. Il télécharge la page (envoie une requête HTTP et reçoit le HTML).
  2. Il en extrait les données voulues — prix, titres, contacts, avis.

Et c'est à la deuxième étape que le scraper utilise justement le parsing comme outil : pour extraire un prix d'une page, il faut d'abord la parser. Autrement dit, le parsing est une partie du scraping — son étape interne, pas une alternative distincte.

Le scraping vise en général des données précises sur des pages précises. Tâches classiques : relever les prix des concurrents, exporter un catalogue de produits, collecter des annonces, surveiller les actualités.


Le crawling

Le crawling, c'est le parcours systématique des pages en suivant les liens.

Le crawler (aussi appelé araignée, bot, spider) part d'une ou plusieurs pages de départ, y trouve tous les liens, les suit, trouve de nouveaux liens — et ainsi de suite. Sa mission n'est pas d'extraire un champ précis, mais de découvrir et parcourir le plus de pages possible.

L'exemple le plus connu de crawlers, ce sont les moteurs de recherche. Les robots de Google et de Bing parcourent Internet en permanence pour savoir quelles pages existent et les indexer.

Dans les projets réels, crawling et scraping sont souvent combinés : le crawler parcourt le catalogue d'une boutique en ligne page après page, et sur chaque fiche produit trouvée se lance le scraper, qui extrait le prix, le nom et les caractéristiques — et à l'intérieur, à son tour, il parse le HTML pour atteindre ces données.


Comment tout s'articule

Le plus simple est de se représenter une chaîne de traitement :

Chaîne de traitement des données : le crawling trouve les pages en suivant les liens, le scraping charge le HTML et récupère les données voulues, le parsing les décompose en structure — arbre et champs prêts

  • Le crawling répond à la question « quelles pages traiter ? »
  • Le scraping« que prendre sur ces pages ? »
  • Le parsing« comment transformer le balisage en données ? »

On peut parser sans scraper (décomposer un fichier déjà là). On peut scraper sans crawling complet (quand la liste des pages est déjà connue). Mais le crawling va presque toujours de pair avec le scraping — sinon, parcourir les pages n'a pas de sens.


Terminologie : pourquoi « parsing » et « scraping » sont souvent confondus

C'est ici que se cache la grande confusion du vocabulaire courant.

En français comme en anglais, la séparation est assez nette : le processus de collecte de données sur les sites s'appelle web scraping — on parle aussi d'extraction automatisée de données, ou de « moissonnage du Web » dans la terminologie officielle — tandis que parsing désigne précisément l'analyse syntaxique du contenu déjà obtenu : HTML, JSON, XML. On entend pourtant parfois « parser un site » ou « écrire un parseur pour une marketplace » au sens de « collecter ses données » : un raccourci de jargon qui recouvre, en réalité, le scraping.

Pourquoi ce raccourci ? Le verbe « parser » est entré tôt dans le vocabulaire des développeurs et sonnait familier ; dans certaines communautés, le terme a fini par désigner l'ensemble du processus. Le mot « scraping » s'est répandu plus tard et paraît encore obscur à certains.

Mais en toute rigueur, ce n'est pas exact. Le parsing n'est qu'une des étapes du scraping, à savoir l'analyse du balisage déjà téléchargé. Quand quelqu'un dit « je parse un site » en ce sens, en réalité il :

  1. télécharge des pages (cela relève du scraping/crawling),
  2. en extrait les données recherchées (le scraping),
  3. et c'est seulement à l'intérieur de la deuxième étape qu'il parse réellement le HTML.

Ce « parsing » au sens large décrit donc le processus entier, alors que le terme technique n'en couvre qu'une petite partie. Dans la documentation technique — française comme anglaise — parsing désigne l'analyse du contenu déjà téléchargé, et l'extraction automatisée de données d'un site se dit web scraping. C'est ce vocabulaire que nous employons sur ce blog : si vous croisez ailleurs « parser un site » au sens de « collecter ses données », sachez qu'il s'agit du scraping.


Les problèmes du parsing

Le parsing semble simple tant que le balisage est soigné. En pratique, voici ce qui gêne.

  • HTML « cassé ». Les navigateurs sont très indulgents : ils affichent la page même si des balises ne sont pas fermées ou sont mal imbriquées. Le parseur, lui, doit deviner la structure d'une façon ou d'une autre, et le résultat peut surprendre.
  • Structure changeante. Vous avez écrit la règle « prends le prix dans l'élément de classe price », et un mois plus tard le site renomme la classe — tout casse. Un parsing arrimé à un balisage précis est très fragile.
  • Contenu dynamique. Beaucoup de sites chargent leurs données après l'affichage de la page, via JavaScript. Dans le HTML initial, les données voulues sont tout simplement absentes — il n'y a rien à parser tant que la page n'a pas été « rendue » dans un vrai navigateur.
  • Encodages. Un encodage mal détecté transforme le texte en caractères illisibles (mojibake), et les nombres/lettres s'extraient avec des erreurs.
  • Ambiguïté. Parfois, des données de sens différent portent exactement le même balisage, et sans règles supplémentaires il est difficile de les distinguer.

Les problèmes du scraping

Ici, aux problèmes du parsing s'ajoutent les difficultés liées au fait que nous accédons au site d'autrui via le réseau.

  • Protection anti-bots. Les sites utilisent les CAPTCHA, la limitation de fréquence des requêtes (rate limiting), le blocage par IP, l'analyse comportementale. Un scraper trop actif se fait rapidement bannir.
  • Sites JavaScript. Si les données arrivent par scripts, une simple requête ne suffit pas — il faut un navigateur « sans tête » (headless browser) qui exécute réellement le JS. C'est nettement plus lent et plus lourd.
  • Fragilité et maintenance. Le site change son balisage — le scraper casse. Tout scraper exige un suivi permanent ; ce n'est pas un outil qu'on écrit une fois pour l'oublier ensuite.
  • Pièges (honeypots). On ajoute parfois aux pages des liens ou des champs invisibles pour l'humain. L'humain ne les remarque pas, le bot les suit — et se trahit.
  • Questions juridiques et éthiques. Conditions d'utilisation du site (ToS), droits d'auteur, données personnelles, charge sur les serveurs d'autrui. Ce qui est techniquement possible n'est pas toujours juridiquement admissible — cela se vérifie toujours à part.
  • robots.txt. Le fichier dans lequel le site indique ce que les bots peuvent ou non parcourir. On le respecte au minimum par politesse (et souvent aussi pour des raisons juridiques/éthiques).

Les problèmes du crawling

Le crawling a ses difficultés propres — elles naissent précisément du fait que le bot décide lui-même quels liens suivre, et que l'échelle peut devenir énorme.

Boucles et « pièges à crawlers »

C'est sans doute le problème le plus caractéristique du crawling.

  • Cycles de liens. La page A pointe vers B, B vers C, et C de nouveau vers A. Si le crawler ne mémorise pas où il est déjà passé, il tournera en rond indéfiniment. La solution de base : tenir la liste des adresses (URL) déjà visitées et ne pas y retourner.
  • « Pièges » infinis (crawler traps). Pires que les cycles simples : les cas où le site génère indéfiniment de nouvelles adresses. Exemples classiques :
  • Le calendrier. Un widget avec le bouton « mois suivant » peut mener à l'infini : le crawler cliquera « suivant » jusqu'en 2099 et au-delà.
  • Filtres et tris sans fin. Chaque combinaison de paramètres dans l'adresse (?sort=price&color=red&page=2…) ressemble à une nouvelle page, alors que le contenu est presque identique. Et les combinaisons sont astronomiquement nombreuses.
  • Identifiants de session dans l'adresse. Si le site insère un session id unique dans l'URL, la même page paraît chaque fois nouvelle, et la liste des « visitées » ne sauve pas — les adresses diffèrent.
  • Pages dupliquées. Le même contenu accessible à plusieurs adresses (avec et sans slash, avec et sans www, avec des paramètres différents). Sans normalisation des adresses, le crawler gaspille ses ressources en refaisant plusieurs fois le même travail.

On résout cela par la normalisation des URL (mise des adresses sous forme unique), la limitation de la profondeur de parcours, des quotas de pages par domaine, l'élagage des sections qui « prolifèrent » suspicieusement et la détection des pièges.

Échelle et politesse

  • Volume. Internet (et même un seul grand site) est immense. Il faut décider quoi parcourir en priorité (priorisation) et ne pas tenter de tout télécharger.
  • Charge sur le serveur. Des requêtes trop fréquentes peuvent mettre le site d'autrui hors service. On introduit donc des délais entre les requêtes (crawl delay) et on limite le parallélisme — c'est le crawling « poli ».
  • Fraîcheur des données. Les pages changent. Il faut décider à quelle fréquence revenir vérifier ce qui a déjà été parcouru, pour que les données ne vieillissent pas.
  • Pages invisibles. Une partie du contenu est inaccessible par simple suivi de liens (derrière des formulaires, derrière une authentification, dans le « web profond ») — le crawler seul n'y parviendra pas.

Résumé express

Processus Ce qu'il fait Question centrale Douleur typique
Crawling Parcourt les pages en suivant les liens « Quelles pages traiter ? » Boucles, pièges, échelle, charge
Scraping Télécharge la page et en extrait les données « Que prendre sur la page ? » Anti-bots, sites JS, fragilité, droit
Parsing Décompose le balisage en structure « Comment transformer le HTML en données ? » HTML « cassé », balisage changeant, encodages

Et l'essentiel à retenir sur la terminologie : le web scraping désigne l'ensemble du processus de collecte de données sur les sites, et le parsing n'en est que l'étape d'analyse du balisage. Si « parser un site » est parfois employé au sens de « collecter ses données », le terme exact pour l'ensemble du processus reste le scraping.