≡En resumen
- El scraping extrae campos concretos de una página; el crawling descubre y recorre páginas.
- Antes de programar un scraper, busca si hay una API oficial o datos abiertos: suele ser más estable y más seguro legalmente.
- Las webs con mucho JavaScript necesitan navegadores headless o leer directamente las llamadas JSON que hace la página.
- Que un dato sea público no lo convierte en libre: cuentan la propiedad intelectual, las bases de datos, las condiciones de uso y el RGPD.
- Un buen scraper se identifica, limita la frecuencia de peticiones y no se salta medidas técnicas de protección.
01 ¿Qué es el web scraping?
El verbo inglés to scrape significa raspar. La idea viene del screen scraping de los años ochenta y noventa, cuando se leían los datos que un sistema antiguo mostraba en pantalla porque no ofrecía otra forma de exportarlos. Con la web, el «raspado» pasó a hacerse sobre el HTML que devuelve el servidor.
No hay que confundirlo con el web crawling, que consiste en descubrir y recorrer páginas siguiendo enlaces: el crawler encuentra las URL y el scraper saca los datos de cada una. Tampoco es lo mismo que la extracción de datos web entendida como proceso completo, que incluye además la limpieza, la integración y la calidad de los datos. El scraping es la pieza técnica central de ese proceso.
02 Cómo funciona un web scraper paso a paso
-
1
Elegir las URL
Una lista fija de páginas, el sitemap XML del sitio o un crawler que descubre las fichas que interesan.
-
2
Pedir cada página
El programa hace una petición HTTP GET, como un navegador, y recibe el HTML. Si la web carga los datos con JavaScript, hace falta un navegador headless o leer la llamada JSON interna.
-
3
Analizar el documento (parsing)
Convierte el HTML en un árbol de elementos y localiza cada dato con selectores CSS o expresiones XPath, por ejemplo el elemento con la clase «precio».
-
4
Limpiar y normalizar
Quita símbolos y espacios, unifica formatos (19,90 € pasa a 19.90), elimina duplicados y marca los valores que faltan.
-
5
Guardar
Exporta a CSV, JSON o una base de datos, con la fecha de captura y la URL de origen de cada registro.
-
6
Programar y vigilar
Se ejecuta cada hora, día o semana y avisa cuando la web cambia su diseño y los selectores dejan de encontrar los datos.
En el HTML de la página aparece algo como <span class="precio">19,90 €</span>. El selector CSS span.precio localiza ese elemento en todas las fichas con la misma plantilla. Muchas tiendas publican además los datos en JSON-LD de Schema.org ("price": "19.90"), que es más estable que el diseño visual y conviene leer primero.
03 Técnicas y herramientas de web scraping
| Herramienta | Tipo | Cuándo usarla |
|---|---|---|
| Requests + Beautiful Soup (Python) | Descarga HTTP y análisis de HTML | Páginas estáticas y volúmenes pequeños o medianos |
| Scrapy (Python) | Framework de crawling y scraping | Miles o millones de páginas, con colas, reintentos y exportación integrados |
| Playwright, Puppeteer, Selenium | Navegadores headless controlados por código | Webs que generan el contenido con JavaScript o exigen interacción |
| Cheerio (Node.js) | Análisis de HTML con sintaxis tipo jQuery | Proyectos en JavaScript con páginas estáticas |
| Extensiones y herramientas sin código | Selección visual de datos en el navegador | Extracciones puntuales sin programar |
| Modelos de lenguaje (LLM) | Extracción a partir de texto libre | Páginas sin estructura fija; requieren validar la salida porque pueden equivocarse |
04 Web scraping vs API: qué conviene en cada caso
Una API es una puerta que el propietario de los datos abre a propósito, con un formato documentado, límites de uso y unas condiciones claras. El scraping lee lo que la web muestra a las personas. Si existe una API oficial o un portal de datos abiertos con lo que necesitas, casi siempre es la mejor opción.
| Criterio | API oficial | Web scraping |
|---|---|---|
| Estabilidad | Alta: versiones documentadas | Baja: se rompe con los cambios de diseño |
| Formato | Estructurado (JSON, XML) | Hay que extraerlo y limpiarlo |
| Cobertura | Solo lo que el proveedor decide exponer | Todo lo que se ve en la página |
| Marco legal | Licencia o condiciones de la API | Depende del contenido, de las condiciones de uso y de los datos personales |
| Coste | Gratuita, por uso o por suscripción | Desarrollo, infraestructura y mantenimiento |
05 Medidas anti-bot: cómo se defienden las webs
robots.txt
Indica qué rutas no deben visitar los bots. No bloquea nada técnicamente, pero ignorarlo es una mala señal ante un juez o el propietario.
Límites de frecuencia
El servidor responde con el código 429 (Too Many Requests) o bloquea la IP cuando llegan demasiadas peticiones seguidas.
CAPTCHA y retos
Pruebas para distinguir personas de programas, a menudo invisibles, que se activan ante un comportamiento sospechoso.
Huella del navegador
Los sistemas de gestión de bots analizan cabeceras, TLS, JavaScript y movimientos para detectar navegadores automatizados.
Muros de registro
Parte del contenido solo se ve tras iniciar sesión, lo que suma condiciones contractuales aceptadas expresamente.
Trampas y datos señuelo
Enlaces invisibles para personas o registros ficticios que delatan a quien copia la base de datos.
06 ¿Es legal el web scraping en España y la UE?
No hay una ley que regule el scraping como tal. Es una técnica, y su legalidad depende de qué se extrae, de dónde y para qué. En España y la UE conviene revisar cinco capas a la vez:
| Capa | Norma | Qué implica |
|---|---|---|
| Propiedad intelectual | Ley de Propiedad Intelectual | Textos, fotos y diseños tienen autor: extraer un precio no es lo mismo que copiar descripciones o imágenes. |
| Bases de datos | Directiva 96/9/CE y art. 133 LPI | El fabricante de una base de datos con inversión sustancial puede prohibir la extracción de partes sustanciales, o repetida de partes pequeñas. |
| Condiciones de uso | Derecho de contratos | El TJUE (C-30/14, 2015) admitió que el titular de una base de datos no protegida por la directiva limite su uso por contrato. |
| Datos personales | RGPD y LOPDGDD | Nombres, emails o perfiles públicos siguen siendo datos personales: necesitas base jurídica, informar a los afectados y minimizar. |
| Minería de textos y datos | Directiva (UE) 2019/790 y art. 67 del Real Decreto-ley 24/2021 | Permite el análisis automatizado de obras accesibles lícitamente, salvo que el titular se lo reserve por medios de lectura mecánica. |
07 Para qué se usa el web scraping: ejemplos
Monitorización de precios
Comercios y marcas comparan precios, promociones y stock de la competencia o controlan el precio mínimo de sus distribuidores.
Investigación de mercado
Catálogos, lanzamientos, reseñas agregadas o anuncios inmobiliarios y de empleo para medir tendencias.
Agregadores y comparadores
Vuelos, hoteles o seguros: históricamente el origen de muchos de los litigios sobre scraping.
Datos para IA
Corpus de texto para entrenar o afinar modelos, sujeto a la reserva de derechos de la minería de textos y datos.
Periodismo e investigación
Boletines oficiales, contratos públicos o webs institucionales cuando no publican datos abiertos.
Automatización interna
Traer a tu sistema datos de portales de proveedores sin API, con su autorización.
Cuando el scraping es solo una pieza de un flujo más amplio (captura, limpieza, clasificación con IA y volcado en tu CRM o ERP), lo sensato es diseñarlo como un sistema y no como un script suelto. Es el tipo de proyecto que resolvemos al automatizar procesos con IA o, si hace falta un panel propio para consultar los datos, con desarrollo web a medida.
08 Buenas prácticas para hacer scraping de forma responsable
- ✓Busca primero una API oficial, un feed o un portal de datos abiertos.
- ✓Lee las condiciones de uso y el robots.txt del sitio, y guarda una copia con la fecha.
- ✓Extrae solo los campos que necesitas; evita datos personales salvo que tengas base jurídica y hayas hecho el análisis RGPD.
- ✓Identifica a tu bot con un user agent y un contacto, en vez de hacerte pasar por un navegador.
- ✓Limita la frecuencia de peticiones y trabaja en horas de poco tráfico para no cargar el servidor.
- ✓No eludas CAPTCHA, bloqueos, inicios de sesión ni otras medidas técnicas.
- ✓No republiques textos ni imágenes protegidos; usa los datos para análisis propio.
- ✓Registra origen y fecha de cada dato para poder justificar su procedencia.
Preguntas frecuentes sobre Web scraping
Significa «raspado web»: extraer automáticamente datos concretos de páginas web, como precios o nombres, y guardarlos en un formato estructurado para analizarlos.
Depende del caso. Extraer datos no personales de páginas públicas respetando las condiciones de uso suele ser defendible, pero puedes infringir la propiedad intelectual, el derecho sobre bases de datos, un contrato o el RGPD si copias contenidos protegidos, partes sustanciales de una base de datos o datos personales.
El crawling descubre y recorre páginas siguiendo enlaces; el scraping extrae datos concretos de esas páginas. Muchos proyectos usan un crawler para encontrar las URL y un scraper para sacar los datos de cada una.
Python es el más habitual, con Requests, Beautiful Soup y Scrapy. En JavaScript se usan Puppeteer, Playwright y Cheerio. Playwright y Selenium también funcionan con otros lenguajes.
Sí, para extracciones sencillas existen extensiones de navegador y plataformas sin código que permiten seleccionar los datos con el ratón. Para volúmenes grandes o webs complejas suele hacer falta programación o un proveedor especializado.
Si hay una API oficial que da los datos que necesitas, úsala: es más estable, está documentada y su uso está autorizado. El scraping tiene sentido cuando no existe API o esta no expone esos datos.
Combina límites de frecuencia por IP, un firewall de aplicaciones o servicio de gestión de bots, CAPTCHA en las acciones sensibles y unas condiciones de uso que prohíban la extracción automatizada. El robots.txt ayuda con los bots que lo respetan, pero no frena a los que no.
Fuentes consultadas
Sobre el autor
Germán Gutiérrez
Development Manager en appyweb
Dirige el equipo de desarrollo de appyweb: aplicaciones web y móviles, SaaS, integraciones y arquitectura de software.
Ver perfil en LinkedIn ↗