Qué es el web scraping
Probablemente no sea la primera vez que escuches el término web scraping. Y si no, seguro que te lo has encontrado en alguna de sus otras formas, como data scraping, rastreo, scraping de datos, extracción de datos o, haciendo referencia a aplicaciones más concretas, como price mapping.
El web scraping consiste en navegar automáticamente una web y extraer de ella información. Esto puede ser muy útil para muchísimas cosas y beneficioso para casi cualquier negocio. A día de hoy, no creo que exista una sola empresa de éxito que no lo haga —o que no quiera hacerlo—. De hecho, la empresa reina del scrapeo es Google, que para que su buscador funcione así de bien tiene que estar constantemente scrapeando la red entera.
Al software programado para scrapear se le suele llamar bot, spider o crawler. Todo el mundo puede programar un crawler, ya que existen herramientas para ponerlo a punto que no requieren conocimientos de programación. Eso sí, estas herramientas nunca te van a dar toda la flexibilidad que tendrías si los desarrollaras en un lenguaje de programación. Más adelante veremos las tecnologías y herramientas más utilizadas para la creación de estos bichitos.
Quizá te hayan venido a la mente los típicos captchas o el típico “No soy un robot” que nos encontramos normalmente al rellenar un formulario online. ¡Exacto! Es de los crawlers de lo que se protegen. Porque además de recopilar información, también se pueden utilizar para rellenar formularios, crear cuentas falsas o realizar cualquier acción en la red de forma automática.
Es cierto que hay un debate legal y ético sobre el scrapeo. Más adelante veremos los riesgos judiciales que supone y cómo llevarlo a cabo de forma responsable.
Para qué sirve el scraping
Imagino que todos habéis escuchado la frase “la información es poder”; pues es muy cierta y scrapear te da información. Por tanto, si scrapeas tienes el poder. Pero, ¿qué aplicaciones prácticas puede tener? En realidad, muchísimas, pero para que os hagáis una idea, recojo algunas de las más habituales:
- Agregadores de contenido
Es una de las aplicaciones originarias del scraping; al principio, se usó para aglutinar noticias u ofertas inmobiliarias en un único sitio y, posteriormente, se aplicó a innumerables ámbitos, como la información empresarial, los eventos físicos, las ofertas de empleo, etc. - Reputación online
La masificación de medios como Twitter permitió el análisis de sentimiento hacia las marcas en redes sociales, a través de técnicas de Data Science; gracias al web scraping, podemos extender el estudio del sentimiento a plataformas de reviews, foros especializados, blogs, comentarios en productos y noticias, etc. - Caza de tendencias (cool hunting)
El siguiente paso lógico tras el estudio de la reputación online fue la caza de tendencias. Es decir, usar el scraping no solo para saber qué se piensa de una marca, sino de qué marcas, productos, personas… se va a estar hablando durante los próximos meses, para aprovechar las oportunidades de marketing. - Optimización de precios
El scraping continuo de diferentes competidores permite generar históricos a lo largo del tiempo con las condiciones del pricing, así como conocer en tiempo real quién ofrece los mejores precios. Esto permite ofrecer un precio óptimo de venta, tanto al cliente final como al canal de distribución. - Monitorización de la competencia
El precio no es la única variable competitiva en el entorno digital. Podemos controlar, rastrear y generar alertas para saber cuándo los competidores actualizan sus catálogos de producto o servicio, renuevan su sitio web, escriben sobre un tema concreto, mencionan nuestros productos, “toman prestadas” nuestras fotos… - Optimización ecommerce
El caso de las tiendas online es muy sensible al scraping. Ya se ha mencionado la optimización de precios, pero del mismo modo se pueden usar técnicas de scraping que nos ayuden a elegir qué imagen mostrar como destacada, qué categorización de productos funciona mejor, qué nicho está libre en un mercado concreto, etc. - Google Search Analysis
El scraping de las SERP (resultados de búsqueda) de Google es crucial para conocer el rendimiento digital de un proyecto: saber cómo se posiciona para las keywords adecuadas (como hacen algunas herramientas SEO, aunque tienen sus limitaciones), conocer la cuota de mercado digital en búsquedas, el tipo de contenidos —artículos, vídeos, imágenes…— que deberían potenciarse, etc.
En general, cualquier cosa que necesites consultar en la web y a la que estés dedicando tiempo para hacerlo se puede automatizar. Es más, piensa qué información no estás consultando, pero consultarías si tuvieras todo el tiempo del mundo.
Consecuencias en el sitio web scrapeado
Hay que tener en cuenta que, cuando una web se scrapea, se está simulando la visita de un usuario. Si el servicio web recibe demasiadas visitas y no le da tiempo de servir a todas, se puede colapsar. Por eso hay que andar con pies de plomo y procurar no atosigar con peticiones a los servidores que están detrás de todo esto.
Por otro lado, también hay que tener en cuenta que, si la araña que está extrayendo la información de un site ejecuta el código de Google Analytics, se traduce en un hit en la herramienta. El scrapeo puede ser aislado, pero en los casos en los que se produce de forma recurrente, podemos crear varios problemas a las webs que visitamos:
- Aumenta la dificultad del análisis de los datos reales, ya que hay que habría que identificar y filtrar ese tráfico artificial.
- El muestreo les afectaría en mayor medida, haciendo que el tamaño de la muestra fuera menor y por consiguiente los datos menos precisos.
- Si los bots pueden hacer login en el site, puede afectar a nivel de audiencia, contaminando los datos de ciertos segmentos de usuarios.
Google Analytics tiene la opción de excluir la actividad de las visitas de los bots del resto de los datos. El problema es que este filtro solo capta a los bots que han sido fichados por IAB/ABC Internacional y aparecen en su lista. Muchos otros bots se pueden detectar por su userAgent, ya que este string puede delatar que efectivamente se trata de un bot. Por ejemplo, un hit en la web que tenga como userAgent “thisismysuperbot” sea, muy probablemente, un bot.

Todo esto puede servir para filtrar la mayoría de las visitas con intención de scraping. Pero, desde código es posible manipular el string de userAgent y conseguir entrar disfrazado de un Mozilla Firefox. Y aquí empieza la guerra.
Con el objetivo de evitar que los bots bloqueen la web —además de evitar que se aprovechen de sus datos— son muchas las compañías que dotan a sus webs de detección y bloqueo de bots. Si, por ejemplo, desde una misma IP detectan demasiadas peticiones seguidas para venir de un humano sin superpoderes, lo bloquearán. Esto no quiere decir que contraten a alguien que se pase el día atento a ver si detecta bots, sino que se puede desarrollar un sistema automático que es capaz de detectar el comportamiento de un no-humano y bloquearlo.
A su vez, los desarrolladores implementan trucos de rotación de IPs mediante proxies, pausas aleatorias entre clics automáticos, etc., intentando simular el comportamiento humano en la web, y así despistar a estos policías virtuales.
Cómo hacer web scraping
Si quieres animarte a hacer web scraping, necesitarás herramientas para ponerte a ello. Vamos a recomendarte los recursos más utilizados para extracción de datos en la web.
Prográmalo tú mismo
El lenguaje de programación más utilizado para scrapear es, con diferencia, Python, ya que tiene varias librerías bastante competentes para scrapear: Scrapy, BeautifulSoup y Selenium.
La más conocida y utilizada es, probablemente, Scrapy. Bueno, en realidad, ni siquiera es una librería, sino un framework, y eso permite que con Scrapy puedas administrar peticiones, preservar sesiones de usuario y seguir redirecciones. Una de las mayores ventajas de Scrapy es que es muy eficiente, es capaz de scrapear más cantidad, más rápido y a menos coste de CPU que las otras alternativas. La única desventaja de Scrapy es que tiene problemas scrapeando webs cuyo html ha sido generado por JavaScript, pero es que esto tampoco es mucho problema, ya que existen middlewares que, añadiendolos a tú código, hacen desaparecer el problema.
La única razón por la que estaría justificado usar otra librería como BeautifulSoup o Selenium en vez de Scrapy, sería en el caso de proyectos muy simples, donde solo tuviéramos que acceder a una dirección, scrapear un par de cosas y ya está. Entonces, no importa tanto la tecnología que utilicemos y, por tanto, elegir lo más sencillo sería lo más acertado. En este caso BeautifulSoup o Selenium serían buenas opciones.
Deja que lo aburrido lo hagan otros
Por otro lado, si nos queremos olvidar de tener que implementar código para resolver los captcha que nos vamos encontrando por la web o los trucos para que no nos baneen las páginas de destino, Scraper API es una buena opción, ya que se encarga de todo esto por ti. La parte negativa es que solo te resuelve un lado de la ecuación: a partir de una URL, te devuelve el HTML en crudo y ahí te apañes. Tendrías que desarrollar e incluir las librerías que necesites para parsear y recolectar lo que realmente te interesa de ese HTML. Además, recorrer todo el catálogo de un ecommerce, por poner un ejemplo, se vuelve más complicado, ya que necesitas a priori conocer todas las URL que entran en juego.
Esta API es de pago, aunque también se puede usar gratis, pero con limitaciones en el número de peticiones.
No quiero ni oír hablar de código
Si lo tuyo no son las líneas de código y lo que quieres es poner a punto un scrapeador desde una interfaz gráfica, con unos cuantos clics, también hay opciones para que así sea. Una de ellas es Octoparse.
Octoparse ofrece una interfaz gráfica para implementar crawlers de forma sencilla. Pone a tu disposición muchas funcionalidades para tu bichito y, si te suscribes a un plan de pago, elimina ciertas limitaciones y añade funcionalidades adicionales.
A mí que me lo den todo hecho
Por supuesto, siempre puedes encargar que lo hagan por ti. En empresas como Aukera nos dedicamos a extraer y analizar datos, así que si tienes un proyecto en mente y crees que podemos ayudarte, no dudes en contactar con nosotros.
Términos éticos y legales
No es tan sencillo decir si scrapear es legal o no. Depende mucho de cada caso y, aún así, la mayoría de las veces no estará muy claro. Por eso, aunque sea poco probable, siempre antes de scrapear se tiene que asumir el riesgo de que la empresa scrapeada pueda poner una denuncia. Aunque lo más probable es que, en el caso de realizar alguna acción de respuesta, sea bloquear al bot o dar alguna especie de aviso.
Eso sí, antes de ponerse a scrapear, es más que recomendable comprobar si se proporciona una API con la cual acceder a los datos sin tener hacer scraping. Por ejemplo, Idealista, la conocida web de alquiler y compra de viviendas, ofrece una API para que ambos lados salgan ganando. Por un lado, realizar peticiones a una API requiere menos desarrollo que scrapear y, por otro, Idealista evita todo ese tráfico “indeseado”. Además, al abrir sus datos al público, dan la oportunidad de que alguien desarrolle algo potente para ellos.
Si no ha habido suerte y no proporcionan una API, habrá que leerse los términos y condiciones, para comprobar que no dicen nada con respecto a la extracción automática de la información. De todas formas, antes de ponerse a scrapear habrá que considerar si el número de peticiones necesarias son demasiado abusivas y si el fin del proyecto perjudica al negocio de la página. Podría haber más pegas por parte de la empresa scrapeada si te estás lucrando a costa de su contenido, ya que puedes ser denunciado por la vulneración de los derechos de propiedad intelectual. Sobre todo si el contenido que se quiere extraer está detrás del login de usuario, ya que, en este caso, seguro que no estamos hablando de información de dominio público.
En conclusión, con el fin de evitar sustos, es recomendable contactar con la empresa para contarles en qué consiste el proyecto o, incluso, llegar a algún acuerdo con ellos. Además, siempre es buena idea dejarse aconsejar por un abogado experto.
Comments