Le parsing de documents consiste à extraire des données structurées de fichiers de formats variés et à les convertir dans une forme adaptée aux traitements ultérieurs : chargement dans une base de données, export vers un tableau, transmission à un outil d'analytique ou à un autre système. En pratique, la tâche ne se limite presque jamais à un seul format : le tarif arrive en Excel, l'export du CRM en CSV, le contrat en PDF, les données d'un service tiers en JSON ou XML, et le plan du site à parcourir avant la collecte de données est au format sitemap.
Cet article est un tour d'horizon. Nous y détaillons la logique de travail avec chaque type de fichier, montrons des exemples minimaux dans différents langages et renvoyons vers des articles spécialisés où chaque format est traité en profondeur. Si vous avez besoin d'une solution clé en main pour une tâche concrète plutôt que de tout faire vous-même, nous proposons des services de parsing sur mesure.
De quoi se compose le parsing de n'importe quel document
Quel que soit le format, le processus comporte presque toujours trois étapes. D'abord la lecture : récupération des octets du fichier depuis un dossier local, une URL ou un flux. Ensuite l'analyse de la structure : transformation du contenu « brut » en objets du langage de programmation — arbre de nœuds, liste de lignes, tableau. Enfin l'extraction et la normalisation : sélection des champs utiles, nettoyage du bruit, conversion des types (dates, nombres, devises) et export du résultat.
La difficulté se déplace entre ces étapes selon le format. Pour les données strictement structurées comme le JSON ou le XML, le gros du travail est déjà fait pour vous : il existe une grammaire formelle et le parseur construira l'arbre à coup sûr. Pour les formats faiblement structurés — PDF, logs, fichiers texte quelconques — l'essentiel de l'effort porte justement sur la troisième étape : il faut « extraire » les données à l'aide d'heuristiques et d'expressions régulières.
Formats de données structurés
JSON
JSON est le format d'échange de données le plus répandu entre services et la réponse standard de la plupart des API. Il se projette directement sur les structures du langage : un objet devient un dictionnaire (ou un tableau associatif), un tableau devient une liste. Le parsing se résume donc à un seul appel de la bibliothèque standard, et le vrai travail commence ensuite, lors du parcours des structures imbriquées. L'analyse détaillée — gestion de l'imbrication, lecture en flux des gros fichiers et erreurs typiques — se trouve dans l'article dédié au parsing de JSON.
import json
with open("data.json", encoding="utf-8") as f:
data = json.load(f)
print(data["items"][0]["name"])
XML
XML est organisé comme un arbre de nœuds avec balises, attributs et texte. Plus strict et plus verbeux que JSON, c'est pourtant sur lui que reposent de nombreux standards sectoriels : exports de marketplaces, formats bancaires, échanges de données industriels. Pour l'analyse, on utilise soit une approche en flux (quand le fichier est volumineux), soit la construction de l'arbre en mémoire avec navigation via XPath. Détails, bibliothèques et exemples dans l'article sur le parsing de XML.
RSS et Atom
RSS est un cas particulier de XML avec un schéma fixe pour les flux d'actualités, de blogs et de podcasts. Techniquement, on peut l'analyser avec n'importe quel parseur XML, mais en pratique il est plus commode d'utiliser des bibliothèques spécialisées qui renvoient directement une liste d'entrées avec titres, dates et liens. Plus de détails dans l'article sur le parsing de RSS.
Sitemap (plan du site)
Le sitemap est encore un format XML : il décrit la liste des URL d'un site à destination des moteurs de recherche et des crawlers. Avant de collecter des données sur un grand site, on parcourt presque toujours le sitemap en premier : il fournit une liste prête de pages, parfois avec dates de mise à jour et priorités, et évite un crawl aveugle des liens. Comment lire les sitemaps simples et imbriqués (sitemap index), tenir compte de lastmod et gérer les versions gzip — dans l'article sur le parsing de sitemap.
Formats tabulaires
CSV
CSV est un format texte simple : « des lignes et des colonnes séparées par une virgule (ou un autre caractère) ». Malgré son apparente simplicité, c'est ici que surgissent le plus de pièges pratiques : séparateurs variés, guillemets à l'intérieur des valeurs, retours à la ligne dans les cellules, encodages et BOM. C'est pourquoi un découpage maison sur la virgule est presque toujours une erreur : il faut un vrai lecteur CSV. L'analyse de ces pièges se trouve dans l'article sur le parsing de CSV.
import csv
with open("prices.csv", encoding="utf-8", newline="") as f:
for row in csv.DictReader(f):
print(row["sku"], row["price"])
Excel (XLSX, XLS)
Excel n'est plus du texte, mais un format binaire (ou, dans le cas de XLSX, empaqueté dans un ZIP) avec des feuilles, des formules, des formats de cellules et des plages fusionnées. Impossible ici de lire simplement le fichier ligne par ligne : il faut des bibliothèques qui comprennent la structure interne du classeur. Souvent, il est plus pratique de convertir d'abord le tarif ou le rapport source en CSV, puis de le traiter de façon uniforme. Comment lire les feuilles, les cellules fusionnées et les valeurs des formules — dans l'article sur le parsing d'Excel.
Formats faiblement structurés
PDF est un format conçu pour l'impression et l'affichage, pas pour le stockage de données : c'est de lui qu'il est le plus difficile d'extraire des informations de manière fiable. Le texte d'un PDF peut être « réel » (sélectionnable) ou n'être qu'une image nécessitant de l'OCR ; les tableaux ne sont pas stockés comme des tableaux, mais comme un ensemble de lignes et de blocs de texte avec des coordonnées. Quelles bibliothèques extraient le texte, lesquelles extraient les tableaux, et quand la reconnaissance d'images est inévitable — tout cela est détaillé dans l'article sur le parsing de PDF.
HTML
HTML est structurellement proche de XML, mais en pratique presque toujours « sale » : balises non fermées, mise en page superflue, contenu dynamique. C'est le format principal lors de la collecte de données sur les sites web : extraction de texte, de liens, de prix et de contacts. L'analyse des parseurs, des sélecteurs CSS et du travail avec les liens se trouve dans l'article sur le parsing de HTML.
TXT et logs
Les fichiers texte quelconques (.txt) et les logs de serveurs n'ont aucun schéma commun : leur format est défini par celui qui a créé le fichier. Ici, les outils principaux sont la lecture ligne par ligne et les expressions régulières. Les logs sont un cas si particulier et si important qu'un article entier leur est consacré ; l'approche générale de l'analyse de texte est décrite dans l'article sur le parsing de TXT.
Quel langage et quelle pile technologique choisir
Il n'existe pas de « bon » choix absolu, mais une pratique bien établie. Python est le standard de fait pour le parsing : des bibliothèques riches pour tous les formats (pandas, lxml, openpyxl, pdfplumber) et un minimum de code. JavaScript/Node.js est pratique quand le parsing est intégré à un projet web ou qu'un rendu navigateur du contenu dynamique est nécessaire. PHP est souvent choisi quand les données alimentent directement un site sur cette stack. Go est retenu pour la vitesse et le traitement parallèle de gros volumes. Dans chaque article spécialisé, nous donnons des exemples dans plusieurs langages, afin que vous puissiez prendre celui qui est le plus proche de votre projet.
Un point commun à toutes ces stacks : c'est le format qui dicte la bibliothèque, et non l'inverse. Il faut donc commencer par identifier précisément le format des fichiers sources, puis passer à l'article correspondant : JSON, XML, RSS, sitemap, CSV, Excel, PDF, HTML, TXT ou logs.