Les données web sont devenues un matériau de recherche ordinaire. Les sociologues étudient le discours sur les plateformes, les économistes suivent les prix en ligne, les informaticiens constituent des corpus, et les chercheurs en santé publique suivent la désinformation. Une grande partie de ces données est collectée à l’aide de scrapers, et une grande partie partage les mêmes faiblesses : personne en dehors de l’équipe ne peut reproduire la collecte, l’évaluation éthique a été rédigée pour des enquêtes, et le jeu de données est cité comme « données collectées par les auteurs », ou pas cité du tout.
Rien de tout cela n’est inévitable. Quelques pratiques, pour la plupart peu coûteuses, rendent les données scrapées reproductibles, vérifiables et citables. Ce guide couvre la manière de concevoir une collecte qui survit à l’évaluation par les pairs, ce qu’un comité d’éthique doit voir, comment emballer et citer le jeu de données, ainsi qu’un petit script testé qui produit les fichiers de citation et de manifeste.
Points clés à retenir
- Le web change et diffère selon le visiteur, donc un jeu de données scrapé ne peut pas être reproduit en relançant le scraper. La reproductibilité signifie enregistrer exactement ce qui a été collecté, quand, d’où et comment, et le préserver.
- Rédigez le protocole de collecte avant de collecter, et traitez les modifications apportées comme des amendements, comme vous le feriez pour toute autre méthode.
- L’évaluation éthique pour les données web repose sur les attentes, le préjudice et l’identifiabilité, pas seulement sur le fait que les données soient publiques ou non. Apportez un plan de gestion des données, pas seulement une dérogation de consentement.
- Emballez le jeu de données avec un manifeste des empreintes de fichiers et du contexte de collecte, une licence, et un fichier CITATION.cff, puis déposez-le là où il obtiendra un identifiant persistant.
- Citez le jeu de données comme une production de recherche à part entière, avec une version et un identifiant, aux côtés de l’article.
Pourquoi les données scrapées sont difficiles à reproduire
Relancer le même code un an plus tard ne produit pas les mêmes données. Les pages changent, disparaissent et se déplacent. De nombreux sites affichent un contenu différent selon le pays, la langue, l’appareil ou l’état de connexion. Les plateformes modifient leur balisage et leurs règles d’accès. Et la collecte elle-même est à perte : les blocages, les délais d’attente et les limitations de débit font perdre des enregistrements de manière inégale, souvent de façons qui corrèlent avec les sujets mêmes étudiés.
Ainsi, la reproductibilité des données web repose sur trois éléments plutôt que sur une nouvelle collecte :
- La documentation de la méthode avec suffisamment de détails pour que quelqu’un puisse tenter la même collecte et comprendre pourquoi son résultat diffère.
- La préservation de ce qui a été réellement collecté, idéalement les réponses brutes ainsi que les données extraites.
- Le compte rendu de ce qui n’a pas été collecté : échecs, exclusions et filtrage, avec des décomptes.
Concevoir la collecte comme un instrument
Traitez le scraper comme un instrument de mesure et rédigez son protocole avant le début de la collecte :
| Élément du protocole | Ce qu’il faut enregistrer |
|---|---|
| Population et échantillonnage | Quelles sont les sources, comment elles ont été choisies, et ce qui entre ou non dans le périmètre |
| Fenêtre de collecte | Dates et heures de début et de fin en UTC, et le calendrier pour une collecte répétée |
| Point de vue (vantage point) | Le pays, le type de réseau, la langue et le profil d’appareil présentés par le collecteur, car de nombreux sites varient selon ces critères |
| Outillage | Dépôt de code et commit, versions des bibliothèques, version du navigateur si un navigateur a été utilisé |
| Règles d’accès | Comment robots.txt, les conditions d’utilisation et les limitations de débit ont été traités, et le rythme des requêtes |
| Gestion des échecs | Les nouvelles tentatives, ce qui compte comme un enregistrement échoué, et comment les échecs sont consignés |
| Traitement | Les étapes d’extraction, de nettoyage, de déduplication et de filtrage, chacune avec des décomptes avant et après |
Deux de ces éléments sont systématiquement absents des articles. Le point de vue (vantage point) compte parce que la même URL peut renvoyer un contenu différent à des visiteurs différents, un problème que nous soutenons devrait être enregistré comme une norme, dans le plaidoyer pour une norme de point de vue. Et les décomptes d’échecs comptent parce qu’un jeu de données auquel il manque 8 % de ses enregistrements n’est interprétable que si les lecteurs savent lesquels.
Lorsque l’étude le permet, conservez les réponses brutes en plus des données extraites. Les stocker au format standard WARC, comme décrit dans conserver la réponse brute, vous permet, à vous et aux chercheurs ultérieurs, de réextraire à partir de exactement ce qui a été collecté lorsqu’il s’avère que l’analyseur était erroné.
L’évaluation éthique
De nombreux processus d’éthique institutionnels ont été conçus autour du consentement des participants, et les données web ne s’y insèrent pas facilement. Les chercheurs soutiennent souvent que les données publiques n’ont besoin d’aucune évaluation ; les comités répondent souvent avec des exigences conçues pour des entretiens. Une meilleure conversation part des questions qui comptent réellement. Les lignes directrices d’éthique de l’Association of Internet Researchers, approuvées dans leur troisième version en 2019, cadrent l’éthique de la recherche sur internet autour du contexte dans lequel les données ont été partagées et du potentiel de préjudice tout au long du cycle de vie de la recherche, plutôt qu’autour d’une étiquette publique ou privée.
Questions auxquelles une demande d’éthique pour des données web devrait répondre :
- À qui appartiennent les données, et qu’attendaient-elles ? Une liste de prix d’une entreprise, les déclarations publiques d’un politicien et le message d’un adolescent sur un forum sont tous « publics », avec des attentes très différentes.
- Les personnes peuvent-elles être identifiées, directement ou par combinaison ? Les citations peuvent être retrouvées jusqu’à leurs auteurs ; l’agrégation de sources peut identifier des personnes qu’aucune source isolée ne pourrait identifier.
- Quel préjudice pourrait en découler, et pour qui ? Considérez l’exposition, le harcèlement et la discrimination, en particulier pour les groupes vulnérables ou les sujets sensibles.
- Comment les données seront-elles minimisées et protégées ? Ce qui n’est pas collecté, comment les identifiants sont pseudonymisés, qui y a accès, où elles sont stockées, et quand elles sont supprimées.
- Qu’est-ce qui sera publié ? Des agrégats, des citations paraphrasées, ou des enregistrements bruts ; et si un jeu de données partagé a besoin de contrôles d’accès.
Les conditions d’utilisation et la loi sont des questions distinctes de l’éthique, et toutes deux nécessitent une réponse. Fiesler, Beard et Keegan ont examiné les dispositions relatives à la collecte de données dans les conditions d’utilisation de plus d’une centaine de sites de réseaux sociaux, dans une étude présentée à ICWSM en 2020, et ont soutenu que les conditions d’utilisation seules constituent une base médiocre pour les décisions éthiques, dans un sens comme dans l’autre. Sur le plan juridique, les usages de recherche bénéficient souvent de dispositions spécifiques ; le droit d’auteur de l’UE, par exemple, comprend une exception pour la fouille de textes et de données par les organismes de recherche, et le droit de la protection des données s’applique aux données personnelles qu’elles soient publiques ou non. Nos aperçus sur la légalité du web scraping et sur le RGPD et la collecte de données constituent un point de départ ; les services juridiques et de protection des données de votre institution font autorité pour votre projet.
Robots.txt mérite une phrase dans tout protocole. Ce n’est pas une loi, mais c’est la déclaration la plus claire et lisible par machine de ce que souhaite un site, et le respecter est facile à justifier ; robots.txt, les opt-outs IA et les signaux de réservation couvre ce que signifient ces signaux.
Emballer le jeu de données
Un jeu de données citable et réutilisable a besoin de plus que des fichiers de données :
- Un manifeste listant chaque fichier avec sa taille et une empreinte cryptographique, plus le contexte de collecte issu du protocole. Les empreintes permettent à quiconque de confirmer qu’il dispose exactement des fichiers utilisés dans l’article.
- Un README décrivant les champs, la méthode, les lacunes connues et la manière d’utiliser les données de façon responsable.
- Une licence pour ce que vous êtes autorisé à partager, et une déclaration claire de ce que vous n’avez pas pu partager et pourquoi.
- Un fichier CITATION.cff, le format de fichier de citation en texte brut que GitHub, Zenodo et les gestionnaires de références savent lire, afin que quiconque puisse citer correctement le jeu de données en un clic.
La fonction ci-dessous écrit le manifeste et le CITATION.cff à partir d’un dossier de fichiers de données et d’une description de la collecte :
import hashlib
import json
from datetime import date
from pathlib import Path
def sha256(path):
digest = hashlib.sha256()
with open(path, "rb") as f:
for block in iter(lambda: f.read(1 << 20), b""):
digest.update(block)
return digest.hexdigest()
def write_dataset_package(folder, title, authors, collection, version="1.0.0"):
"""Write a manifest (what was collected, how, and file hashes) and a CITATION.cff for a scraped dataset."""
folder = Path(folder)
files = sorted(p for p in folder.rglob("*") if p.is_file() and p.name not in ("MANIFEST.json", "CITATION.cff"))
manifest = {
"title": title,
"version": version,
"collection": collection, # sources, window, vantage point, tool and code version, robots policy
"files": [{"path": str(p.relative_to(folder)), "bytes": p.stat().st_size, "sha256": sha256(p)} for p in files],
}
(folder / "MANIFEST.json").write_text(json.dumps(manifest, indent=2) + "\n", encoding="utf-8")
lines = [
"cff-version: 1.2.0",
'message: "If you use this dataset, please cite it as below."',
"type: dataset",
f"title: {json.dumps(title)}",
f"version: {json.dumps(version)}",
f"date-released: {date.today().isoformat()}",
"authors:",
]
for person in authors:
lines.append(f" - family-names: {json.dumps(person['family'])}")
lines.append(f" given-names: {json.dumps(person['given'])}")
if person.get("orcid"):
lines.append(f" orcid: {json.dumps(person['orcid'])}")
abstract = (f"Collected {collection['window']} from {', '.join(collection['sources'])}. "
"See MANIFEST.json for method and file hashes.")
lines.append(f"abstract: {json.dumps(abstract)}") # JSON strings are valid YAML, so quotes cannot break the file
(folder / "CITATION.cff").write_text("\n".join(lines) + "\n", encoding="utf-8")
return manifest
Utilisée sur un petit jeu de données d’exemple :
from package import write_dataset_package
manifest = write_dataset_package(
"dataset",
title="Robots.txt rules for AI crawlers on the top 10,000 domains",
authors=[{"family": "Example", "given": "Researcher", "orcid": "https://orcid.org/0000-0002-1825-0097"}],
collection={
"sources": ["robots.txt files of the Tranco top 10,000 domains"],
"window": "on 6 October 2026",
"vantage_point": "one network in Romania",
"tool": "survey.py at commit 3f2a9c1",
"robots_policy": "only robots.txt itself was requested",
},
)
print(len(manifest["files"]), "files listed")
L’ORCID affiché est l’identifiant d’exemple publié par ORCID lui-même ; utilisez le vôtre. Nous avons validé le fichier généré avec cffconvert, l’outil de référence du format, qui a indiqué « Citation metadata are valid according to schema version 1.2.0 », et confirmé qu’il reste valide lorsque les titres et les noms contiennent des guillemets et des apostrophes, ce sur quoi les modèles naïfs échouent. La sortie au format APA de l’outil pour l’exemple indique : « Example R. (2026). Robots.txt rules for AI crawlers on the top 10,000 domains (version 1.0.0). »
Déposer et citer
Un jeu de données dans un dossier de laboratoire ou un dépôt GitHub personnel peut disparaître. Déposez-le dans un dépôt qui délivre un identifiant persistant :
- Les dépôts généraux tels que Zenodo, exploité par le CERN, délivrent un DOI pour chaque dépôt, gratuitement, avec une limite standard de 50 GB par enregistrement.
- Les dépôts institutionnels et thématiques peuvent être exigés par votre organisme de financement ou offrir une meilleure découvrabilité dans votre domaine.
- L’accès restreint est une option lorsque les données ne peuvent pas être entièrement publiques : déposez le manifeste et la documentation de manière ouverte, et les données elles-mêmes sous accès contrôlé.
Les principes FAIR, publiés dans Scientific Data en 2016, résument ce que le dépôt devrait permettre d’atteindre : les données doivent être trouvables, accessibles, interopérables et réutilisables, par des personnes comme par des machines.
Puis citez le jeu de données dans l’article comme une référence à part entière, avec les auteurs, l’année, le titre, la version, le dépôt et l’identifiant, pas seulement comme une phrase dans la section méthodes. Citez la version exacte que vous avez analysée, et publiez une nouvelle version, avec un nouvel identifiant, lorsque les données changent.
Une liste de contrôle
- Protocole rédigé avant la collecte, avec échantillonnage, fenêtre, point de vue, outillage, règles d’accès et gestion des échecs.
- Demande d’éthique couvrant les attentes, l’identifiabilité, le préjudice, la minimisation et la publication.
- Réponses brutes préservées lorsque l’étude le permet, et chaque étape de traitement comptabilisée.
- Manifeste avec empreintes de fichiers et contexte de collecte, README, licence et CITATION.cff.
- Dépôt avec un identifiant persistant, et une citation de jeu de données versionnée dans l’article.
La même rigueur s’applique en dehors du monde académique ; construire des jeux de données d’entraînement à grande échelle couvre ce point pour les corpus de machine learning.
En résumé
Les données scrapées peuvent constituer un matériau de recherche rigoureux, mais seulement si elles sont traitées comme telles : collectées selon un protocole écrit, évaluées pour l’éthique de leur contexte plutôt que pour leur étiquette publique, préservées avec suffisamment de détails pour expliquer ce qui a été observé, et publiées comme une production citable et versionnée.
La majeure partie de cela relève de la documentation et de l’emballage, réalisés une fois au début et une fois à la fin. C’est la différence entre un jeu de données qui soutient un seul article et un autre qui soutient tout un domaine.
Sources et références
- Association of Internet Researchers, Internet Research: Ethical Guidelines 3.0, 2019.
- Wilkinson et al., The FAIR Guiding Principles for scientific data management and stewardship, Scientific Data, 2016.
- Fiesler, Beard et Keegan, No Robots, Spiders, or Scrapers: Legal and Ethical Regulation of Data Collection Methods in Social Media Terms of Service, ICWSM 2020.
- Citation File Format, version 1.2.0, et le validateur cffconvert.
- Zenodo, exploité par le CERN.
- Code testé par Shifter le 6 octobre 2026.