Parser, scraper y crawler: qué hacen y en qué se diferencian

Parser, scraper y crawler: qué hacen y en qué se diferencian

Un analizador y un raspador a menudo se nombran igual, pero los términos describen partes diferentes del trabajo con datos. El analizador descompone texto, código o documentos en partes comprensibles. El raspador obtiene datos de un sitio u otra fuente y los entrega, a menudo justo al analizador.

En resumen: el analizador responde a la pregunta «cómo descomponer los datos recibidos», y el raspador responde a «cómo obtener datos de una fuente externa».

Qué es un analizador y qué es un raspador

El analizador, del inglés parse, convierte el material original en una estructura que puede usar un programa. El material de entrada puede ser una página HTML, un archivo XML, una respuesta JSON, una tabla CSV, un registro de servidor, un correo, una lista de precios o cualquier otro formato de texto. El analizador busca en los datos etiquetas, campos, atributos, cadenas, fechas, precios, nombres, enlaces y otros elementos.

Por ejemplo, una página HTML para una persona se ve como un sitio, mientras que para un programa es un conjunto de etiquetas, atributos y texto. El analizador construye a partir de ese conjunto un árbol de elementos. La documentación de Python describe HTMLParser como base para analizar archivos en formato HTML y XHTML. MDN describe DOMParser como un mecanismo que analiza una cadena con HTML o XML y devuelve un documento separado en memoria.

El raspador, del inglés scrape, recopila datos de un sitio o servicio. Normalmente el raspador envía una solicitud a una página, obtiene HTML, extrae los bloques necesarios y guarda el resultado en una tabla, base de datos, archivo u otro sistema. El raspador puede recopilar precios de productos, ofertas de empleo, fichas de empresas, noticias, horarios, reseñas, especificaciones de dispositivos y otros datos abiertos.

Un ejemplo simple de la combinación: un script en Python realiza una petición mediante requests y pasa el HTML obtenido a Beautiful Soup. En esta pareja, requests actúa como raspador, y Beautiful Soup es un envoltorio útil sobre el analizador: permite buscar elementos en el árbol de análisis por etiquetas, clases y atributos. Para tareas más complejas se usa Scrapy, que es un framework completo que combina funciones de rastreador, raspador y analizador.

Cómo funciona un analizador

El analizador comienza a trabajar después de que los datos ya han llegado al programa. El origen no es tan importante: los datos pueden venir de un archivo, una API, una página HTML, una cola de mensajes o un formulario en un sitio. El analizador lee el contenido, verifica el formato, divide el material en elementos y devuelve una estructura. Para HTML esa estructura suele ser un árbol del documento, para JSON un objeto con campos, para CSV una tabla con filas y columnas.

El trabajo del analizador parece sencillo solo desde afuera. En el interior surgen problemas con codificaciones incorrectas, maquetación rota, espacios adicionales, distintos formatos de fecha, etiquetas anidadas y campos faltantes. Por eso el analizador no debe limitarse a buscar texto por una plantilla. Un analizador fiable tiene en cuenta la estructura del documento y tolera pequeños cambios en los datos de origen. Si el sitio cambia el nombre de una clase CSS o reordena etiquetas, el analizador dejará de encontrar los campos necesarios: esa es la causa más frecuente de fallos en proyectos reales.

Cómo funciona un raspador

El raspador opera de forma más amplia. Primero selecciona direcciones de páginas o obtiene una lista de enlaces. Luego envía solicitudes HTTP, recibe respuestas del servidor, pasa el HTML o JSON al análisis, extrae los campos necesarios y guarda el resultado. En un caso simple el raspador descarga una página. En uno más complejo recorre la paginación, abre fichas de producto, examina categorías, respeta límites de solicitudes y reintenta tras errores temporales. Es buena práctica indicar un User-Agent realista y hacer pequeñas pausas entre solicitudes (rate limiting) para no sobrecargar el sitio y reducir el riesgo de bloqueo.

En sitios dinámicos al raspador le resulta más difícil. Parte de los datos puede cargarse después de abrir la página mediante JavaScript. Entonces una petición normal de HTML no es suficiente. El raspador busca una API interna que devuelva datos en JSON, o bien usa automatización de navegador — por ejemplo, Playwright o Puppeteer. El segundo camino es más pesado, más lento y más costoso, porque el programa ejecuta un navegador, espera a que la página cargue y solo entonces obtiene los elementos necesarios.

El rastreador añade otra capa. El rastreador no se limita a tomar datos de una página concreta, sino que recorre muchas páginas siguiendo enlaces. Los motores de búsqueda usan rastreadores para encontrar páginas para indexar. Un raspador puede incluir un rastreador si hace falta recopilar datos no de una sola dirección sino de todo un apartado del sitio. El rastreador no tiene por qué extraer él mismo los datos (precios, textos): a veces eso es un proceso separado.

En qué se diferencian el analizador y el raspador

Criterio Analizador Raspador
Tarea principal Descomponer datos ya recibidos Obtener datos de una fuente externa
Entrada típica HTML, XML, JSON, CSV, registro, texto URL de página, API, lista de enlaces, sitio
Salida típica Estructura con campos y elementos Conjunto listo de datos recopilados
Dependencia del sitio Puede funcionar sin sitio, por ejemplo con un archivo Normalmente depende del sitio, servidor o API
Riesgos Errores de análisis, estructura incorrecta, pérdida de campos Bloqueos, límites, violación de reglas del sitio, riesgos legales

La diferencia principal tiene que ver con el papel, no con el lenguaje de programación o la biblioteca. El analizador convierte material crudo en una estructura útil. El raspador obtiene el material y coordina todo el proceso de recolección. Por eso la expresión «analizador de sitio» en el uso común suele referirse a un raspador que además analiza HTML.

El ejemplo de una tienda online ilustra bien la frontera. El raspador abre la página del producto, obtiene HTML, espera la respuesta del servidor y pasa el código después. El analizador encuentra en el HTML el nombre del producto, el precio, la disponibilidad, el código y las características. Luego el raspador guarda el resultado y pasa a la siguiente página. Si se quita el analizador, el raspador solo tendrá HTML crudo. Si se quita el raspador, el analizador no tendrá nada que descomponer si los datos no están ya en un archivo.

El analizador no siempre está ligado a la web. Un programa que lee un extracto bancario en CSV y clasifica las operaciones también es un analizador. Un servicio que extrae campos de registros también usa un analizador. Procesar una respuesta JSON de una API legítima también es análisis. El raspado empieza cuando el programa toma automáticamente datos de una página o servicio externo, especialmente cuando el sitio está pensado para humanos y no para una descarga automática.

Si un servicio dispone de una API oficial, es mejor empezar por ella: ese método suele ser más estable, rápido y reduce la mayoría de riesgos. El raspado tiene sentido cuando no hay API, la API es incompleta o los datos solo están disponibles en HTML.

También es importante respetar las reglas del sitio. El archivo robots.txt indica a los rastreadores qué direcciones el propietario solicita no tocar. Google ha subrayado en varias ocasiones que robots.txt controla lo que el rastreador evita, pero no garantiza la exclusión de una página del índice de búsqueda. El estándar RFC 9309 aclara que el protocolo tiene carácter recomendatorio y que el cumplimiento de robots.txt es voluntario para los rastreadores: no es un mecanismo de control de acceso, sino una señal de las intenciones del propietario.

¿Se puede llamar raspador a un analizador?

En el lenguaje cotidiano se hace con frecuencia, pero técnicamente la formulación no es precisa. Un raspador puede incluir un analizador, pero el raspador es más amplio: obtiene datos del sitio y gestiona todo el proceso de recolección.

¿El análisis siempre está relacionado con sitios web?

No. El análisis se necesita al trabajar con archivos, registros, tablas, JSON, XML, correos electrónicos y otros formatos. El sitio es solo una de las posibles fuentes de datos.

¿El raspado es legal?

Depende de los datos, del método de recogida, de las normas del sitio y de los fines. No se debe recopilar información cerrada, eludir protecciones, violar derechos de autor ni condiciones de acceso. Otro aspecto es el acuerdo de usuario (Terms of Service): su incumplimiento no siempre conlleva responsabilidad penal, pero puede tener consecuencias civiles. En Rusia son relevantes las normas sobre datos personales (FZ-152), el secreto empresarial y los derechos de autor. El artículo 272 del Código Penal de la Federación Rusa sobre el acceso indebido a información informática se aplica cuando el raspador supera medidas técnicas de protección o accede a recursos cerrados sin permiso, pero no cuando se recopilan datos públicos abiertos. En casos poco claros conviene consultar a un abogado.

¿Qué es mejor usar, API o raspador?

Si el servicio dispone de una API oficial, empiece por ella. Ese método suele ser más estable, más rápido y más seguro para ambas partes. El raspador tiene sentido cuando no hay API o cuando el propietario permite explícitamente la recopilación automática.

Conclusión

El analizador sirve para entender la estructura de los datos; el raspador, para obtenerlos automáticamente. Raspador y analizador suelen trabajar en conjunto. Empiece comprobando la existencia de una API oficial y del archivo robots.txt: eso ahorrará tiempo y reducirá riesgos antes de escribir la primera línea de código.

Alt text