El web scraping es extraer datos de una página web en lugar de de una API. Existe porque los datos que quieres suelen estar visibles para cualquier visitante y ausentes de cualquier endpoint oficial.
La técnica importa más que la etiqueta. Cuatro enfoques, en orden descendente de fiabilidad:
1. Datos estructurados incrustados
Muchas páginas envían sus propios datos como JSON dentro del HTML — application/ld+json, un bloque de hidratación, una caché de Apollo. Es el mejor objetivo disponible: son los datos a partir de los cuales la propia página se renderiza, tienen campos con nombre, y cambian mucho menos a menudo que el marcado.
2. La propia API JSON de la página
Algunos sitios piden su contenido a un endpoint JSON interno que el navegador puede ver. Leerlo directamente es más limpio que parsear HTML, aunque es la superficie que más probablemente exija iniciar sesión.
3. Parseo del DOM
Seleccionar elementos por estructura o por clase. Es viable, pero los nombres de clase cambian sin avisar y un rediseño lo rompe todo de golpe.
4. Expresión regular sobre el HTML en bruto
La peor opción, y falla de una forma concreta: coincide con lo primero que parece correcto. En una plataforma que medimos, la cadena follower_count aparece 42 veces en una página de perfil, y la mayoría de esas veces son contadores de tableros, no del perfil. Una expresión regular toma el que viniera primero y devuelve un número verosímil del objeto equivocado — un fallo silencioso.
Qué hace que el scraping no sea fiable
| Obstáculo | Qué hace |
|---|---|
| Muros de inicio de sesión | Pone el dato detrás de condiciones que tendrías que aceptar |
| Huella del cliente | Devuelve una página sin el dato a los clientes que no son navegadores |
| Valores de visualización redondeados | Muestra 83K donde el JSON incrustado guarda 83754 |
| 200 sin datos | Sirve una página de error con estado de éxito |
Esto último es la razón de que cada parseo necesite un ancla: un campo que tiene que estar presente para que el documento sea lo que crees que es. Sin una, extraerás datos de una página de "no encontrado" y no te darás cuenta nunca.
El ancho de banda es el coste que nadie pone en precio
Leer un perfil en un protocolo pequeño está por debajo de un kilobyte. La misma lectura en una plataforma comercial grande puede ser de 270 KB decodificados. Esa diferencia es el coste real del scraping a volumen, y lo calculamos plataforma por plataforma.
La legalidad es una pregunta aparte de la técnica — mira datos personales para la parte que sobrevive incluso cuando se gana el argumento de las condiciones de servicio.