Conocimiento

Recopilación de datos web para la investigación académica: reproducibilidad, revisión ética y cómo citar un conjunto de datos extraído

Los datos extraídos mediante scraping son ya habituales en la investigación, pero a menudo resultan difíciles de reproducir, revisar o citar. Cómo recopilar datos web que superen la revisión por pares, los comités de ética y la reutilización.

James Meadow

6 de octubre de 2026 · 12 min de lectura

Los datos web se han convertido en material de investigación habitual. Los científicos sociales estudian el discurso en plataformas, los economistas siguen precios online, los informáticos construyen corpus y los investigadores de salud pública siguen la desinformación. Gran parte se recopila con scrapers, y gran parte comparte las mismas debilidades: nadie fuera del equipo puede reproducir la recopilación, la revisión ética se redactó pensando en encuestas, y el conjunto de datos se cita como “datos recopilados por los autores” o directamente no se cita.

Nada de esto es inevitable. Unas pocas prácticas, la mayoría de ellas baratas, hacen que los datos extraídos sean reproducibles, revisables y citables. Esta guía cubre cómo diseñar una recopilación que resista la revisión por pares, qué necesita ver un comité de ética, cómo empaquetar y citar el conjunto de datos, y un pequeño script probado que genera los archivos de citación y manifiesto.

Ideas clave

  • La web cambia y difiere según quién la vea, así que un conjunto de datos extraído no puede reproducirse volviendo a ejecutar el scraper. Reproducibilidad significa registrar exactamente qué se recopiló, cuándo, de dónde y cómo, y preservarlo.
  • Escriba el protocolo de recopilación antes de recopilar, y trate los cambios en él como enmiendas, igual que haría con cualquier otro método.
  • La revisión ética para datos web depende de las expectativas, el daño y la identificabilidad, no solo de si los datos son públicos. Aporte un plan de gestión de datos, no solo una exención de consentimiento.
  • Empaquete el conjunto de datos con un manifiesto de hashes de archivo y contexto de recopilación, una licencia y un archivo CITATION.cff, y luego deposítelo donde obtenga un identificador persistente.
  • Cite el conjunto de datos como un producto de investigación por derecho propio, con una versión y un identificador, junto con el artículo.

Por qué los datos extraídos son difíciles de reproducir

Volver a ejecutar el mismo código un año después no produce los mismos datos. Las páginas cambian, desaparecen y se mueven. Muchos sitios muestran contenido distinto según el país, el idioma, el dispositivo o el estado de inicio de sesión. Las plataformas cambian su marcado y sus reglas de acceso. Y la recopilación en sí misma tiene pérdidas: bloqueos, tiempos de espera agotados y límites de velocidad eliminan registros de forma desigual, a menudo de maneras que correlacionan precisamente con lo que se está estudiando.

Así que la reproducibilidad de los datos web descansa en tres cosas en lugar de en volver a recopilar:

  1. Documentación del método con suficiente detalle como para que alguien pudiera intentar la misma recopilación y entender por qué su resultado difiere.
  2. Preservación de lo que realmente se recopiló, idealmente las respuestas en bruto además de los datos extraídos.
  3. Rendición de cuentas sobre lo que no se recopiló: fallos, exclusiones y filtrado, con recuentos.

Diseñe la recopilación como un instrumento

Trate el scraper como un instrumento de medición y escriba su protocolo antes de que empiece la recopilación:

Elemento del protocoloQué registrar
Población y muestreoCuáles son las fuentes, cómo se eligieron, y qué entra y qué queda fuera del alcance
Ventana de recopilaciónFechas y horas de inicio y fin en UTC, y el calendario para recopilaciones repetidas
Punto de vistaEl país, el tipo de red, el idioma y el perfil de dispositivo que presentó el recolector, ya que muchos sitios varían según estos factores
HerramientasRepositorio de código y commit, versiones de las bibliotecas, versión del navegador si se usó uno
Reglas de accesoCómo se gestionaron robots.txt, los términos de servicio y los límites de velocidad, y el ritmo de las solicitudes
Gestión de fallosReintentos, qué cuenta como un registro fallido, y cómo se registran los fallos
ProcesamientoPasos de extracción, limpieza, deduplicación y filtrado, cada uno con recuentos antes y después

Dos de estos elementos faltan habitualmente en los artículos. El punto de vista importa porque la misma URL puede devolver contenido distinto a visitantes distintos, un problema que sostenemos que debería registrarse como estándar en el argumento a favor de un estándar de punto de vista. Y los recuentos de fallos importan porque un conjunto de datos al que le falta el 8% de sus registros solo es interpretable si los lectores saben qué 8% es.

Cuando el estudio lo permita, conserve las respuestas en bruto además de los datos extraídos. Almacenarlas en el formato estándar WARC, como se describe en conservar la respuesta en bruto, le permite a usted y a investigadores posteriores volver a extraer a partir de exactamente lo que se recopiló cuando resulta que el analizador estaba equivocado.

Revisión ética

Muchos procesos institucionales de ética se diseñaron en torno al consentimiento de los participantes, y los datos web no encajan bien. Los investigadores a menudo argumentan que los datos públicos no necesitan revisión; los comités a menudo responden con requisitos diseñados para entrevistas. Una mejor conversación parte de las preguntas que realmente importan. Las directrices éticas de la Association of Internet Researchers, aprobadas en su tercera versión en 2019, enmarcan la ética de la investigación en internet en torno al contexto en el que se compartieron los datos y el potencial de daño a lo largo de todo el ciclo de vida de la investigación, en lugar de en torno a una etiqueta de público o privado.

Preguntas que una solicitud de ética para datos web debería responder:

  • ¿De quién son los datos, y qué esperaban? La lista de precios de una empresa, las declaraciones públicas de un político y la publicación de un adolescente en un foro son todos “públicos”, con expectativas muy diferentes.
  • ¿Se puede identificar a las personas, directamente o por combinación? Las citas se pueden rastrear hasta sus autores; agregar fuentes puede identificar a personas que ninguna fuente por sí sola identificaría.
  • ¿Qué daño podría seguir, y a quién? Considere la exposición, el acoso y la discriminación, especialmente para grupos vulnerables o temas delicados.
  • ¿Cómo se minimizarán y protegerán los datos? Qué no se recopila, cómo se seudonimizan los identificadores, quién tiene acceso, dónde se almacenan y cuándo se eliminan.
  • ¿Qué se publicará? Agregados, citas parafraseadas o registros en bruto; y si un conjunto de datos compartido necesita controles de acceso.

Los términos de servicio y la ley son cuestiones separadas de la ética, y ambas necesitan una respuesta. Fiesler, Beard y Keegan examinaron las disposiciones sobre recopilación de datos en los términos de servicio de más de un centenar de sitios de redes sociales, en un estudio presentado en ICWSM en 2020, y argumentaron que los términos de servicio por sí solos son una base pobre para las decisiones éticas en cualquier dirección. En el plano legal, los usos de investigación a menudo tienen disposiciones específicas; la ley de derechos de autor de la UE, por ejemplo, incluye una excepción para la minería de texto y datos por parte de organizaciones de investigación, y la ley de protección de datos se aplica a los datos personales independientemente de si son públicos. Nuestros resúmenes sobre si el web scraping es legal y el RGPD y la recopilación de datos son un punto de partida; los responsables legales y de protección de datos de su institución son la autoridad para su proyecto.

Robots.txt merece una frase en cada protocolo. No es una ley, pero es la declaración legible por máquina más clara de lo que quiere un sitio, y respetarlo es fácil de defender; robots.txt, exclusiones de IA y señales de reserva cubre qué significan estas señales.

Empaquete el conjunto de datos

Un conjunto de datos que pueda citarse y reutilizarse necesita más que los archivos de datos:

  • Un manifiesto que liste cada archivo con su tamaño y un hash criptográfico, además del contexto de recopilación según el protocolo. Los hashes permiten a cualquiera confirmar que tiene exactamente los archivos que usó el artículo.
  • Un README que describa los campos, el método, las lagunas conocidas y cómo usar los datos de forma responsable.
  • Una licencia para lo que se le permite compartir, y una declaración clara de lo que no pudo compartir y por qué.
  • Un archivo CITATION.cff, el formato de texto plano Citation File Format que GitHub, Zenodo y los gestores de referencias leen, de modo que cualquiera pueda citar el conjunto de datos correctamente con un clic.

La función siguiente escribe el manifiesto y el CITATION.cff a partir de una carpeta de archivos de datos y una descripción de la recopilación:

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

Usada en un pequeño conjunto de datos de ejemplo:

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")

El ORCID mostrado es el propio identificador de ejemplo publicado por ORCID; use el suyo. Validamos el archivo generado con cffconvert, la herramienta de referencia del formato, que informó “Citation metadata are valid according to schema version 1.2.0”, y confirmamos que sigue siendo válido cuando los títulos y nombres contienen comillas y apóstrofos, algo con lo que las plantillas ingenuas fallan. La salida en estilo APA de la herramienta para el ejemplo dice: “Example R. (2026). Robots.txt rules for AI crawlers on the top 10,000 domains (version 1.0.0).”

Deposite y cite

Un conjunto de datos en una carpeta de laboratorio o en un repositorio personal de GitHub puede desaparecer. Deposítelo en un repositorio que emita un identificador persistente:

  • Repositorios generales como Zenodo, operado por el CERN, emiten un DOI para cada subida, sin coste, con un límite estándar de 50 GB por registro.
  • Repositorios institucionales y temáticos pueden ser requeridos por su financiador u ofrecer mejor visibilidad en su campo.
  • El acceso restringido es una opción cuando los datos no pueden ser totalmente públicos: deposite el manifiesto y la documentación de forma abierta, y los datos en sí bajo acceso controlado.

Los principios FAIR, publicados en Scientific Data en 2016, resumen lo que el depósito debería lograr: los datos deben ser localizables, accesibles, interoperables y reutilizables, por personas y por máquinas.

Luego cite el conjunto de datos en el artículo como una referencia propia, con autores, año, título, versión, repositorio e identificador, no solo como una frase en la sección de métodos. Cite la versión exacta que analizó, y publique una nueva versión, con un nuevo identificador, cuando los datos cambien.

Una lista de comprobación

  • Protocolo escrito antes de la recopilación, con muestreo, ventana, punto de vista, herramientas, reglas de acceso y gestión de fallos.
  • Solicitud de ética que cubra expectativas, identificabilidad, daño, minimización y publicación.
  • Respuestas en bruto preservadas cuando el estudio lo permita, y cada paso de procesamiento contado.
  • Manifiesto con hashes de archivo y contexto de recopilación, README, licencia y CITATION.cff.
  • Depósito con un identificador persistente, y una cita del conjunto de datos con versión en el artículo.

La misma disciplina se aplica fuera del ámbito académico; construir conjuntos de datos de entrenamiento a gran escala lo cubre para corpus de aprendizaje automático.

En resumen

Los datos extraídos pueden ser material de investigación riguroso, pero solo si se tratan como tal: recopilados según un protocolo escrito, revisados por la ética de su contexto en lugar de por su etiqueta de público, preservados con suficiente detalle para explicar lo que se observó, y publicados como un producto citable y versionado.

La mayor parte de esto es documentación y empaquetado, hecho una vez al principio y una vez al final. Es la diferencia entre un conjunto de datos que sustenta un artículo y uno que sustenta todo un campo.

Fuentes y referencias

  • 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 y 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, versión 1.2.0, y el validador cffconvert.
  • Zenodo, operado por el CERN.
  • Código probado por Shifter el 6 de octubre de 2026.

¿Listo para empezar?

Prueba los proxies residenciales de Shifter, más de 205M IPs, más de 195 países, desde 0,75 $/GB.

Comenzar