Alternativas para realizar web scraping 4


El web scraping (raspado de páginas web) consiste en la extracción de los datos significativos de una o varias páginas web determinadas, o de todas las páginas web que estén relacionadas mediante enlaces en un sitio web, para una manipulación o análisis posterior .

Es el mismo concepto básico en el que se basa Google para Indexar los sitios web de Internet y presentar los resultados en la página de resultados de su buscador.


(*) Actualización Mayo 2016: Desde que en 2014 escribiese este post, han habido movimientos en los players del web Scraping. Re-lee el artículo con lo último.

(*) Actualización Julio 2017: He aportado algo de luz sobre el coste de algunos tipos de servicios de web scraping. Re-lee el artículo para enterarte.

 

Terminología del web scraping

Estas técnicas (conocidas bajo varios términos como web crawling, screen scraping, web extraction, crawl spider, web-bot, spider robot, data miningharvests, …) consisten en capturar una o todas las página de un sitio web y procesar algunas partes de su contenido, descartando otras.

Los conceptos de web crawling o web spider, se refieren concretamente a que para obtener las páginas web que nos interesan hemos de rastrear sus enlaces web, es decir, hemos de navegar por la estructura en árbol (o grafo) del sitio web, realizando una exploración recursiva de todos sus enlaces hasta el nivel de profundidad que determinemos. Bajo el término screen scraping nos referimos a la extracción de la información de una página web parte de cuyo contenido está creado en el momento de ser visualizada, por lo que tenemos que recurrir a herramientas tipo headless browser que incluyen motores de Javascript y de CSS.

Una de las fuentes iniciales de enlaces para empezar a hacer el web scraping podría ser la página de resultados de un buscador web, como sería el caso de la SERP (Search Engine Results Page, o página de resultados del buscador) de Google, tras hacer una búsqueda por la palabra clave (keyword), o de los enlaces indexados de un sitio web (site:), de los links que contienen un determinado término, o de complejas consultas usando cualquiera de los comandos y operadores que Google nos permite (footprints). También podríamos ayudarnos del buscador interno que suelen tener los ecommerces o cualquier web bien hecha.

Los usos que se les pueden dar a estas técnicas son muy variopintos: para realizar optimizaciones web de todo tipo (como SEO/WPO), para extraer datos y analizarlos, para alimentar una base de datos, hacer una migración de un sitio web, para recopilar y ofrecer datos dispersos por varias webs, generar alertas, y algunos otros menos lícitos o desaconsejados.

Entre las aplicaciones prácticas estarían: la monitorización de precios de la competencia, localización de items o stock en eCommerces, recolección de fichas de productos en eCommerces, detección de cambios en sitios web, registrar lanzamientos y novedades, etc.

Aspectos a tener en cuenta al hacer un web scraping

A la hora de abordar un proyecto de web scraping hemos de tener en cuenta 3 aspectos fundamentales:

  1. Frecuencia de la extracción:
    • Si el proceso se va a realizar una única vez, por ejemplo para realizar una migración puntual. O si por el contrario, se va a utilizar repetidas veces, como sería el obtener los datos más actuales de manera frecuente.
  2. El volumen de datos y los recursos disponibles
    • Si queremos recopilar unas decenas de miles de registros, o menos, vamos a poder usar una serie de técnicas y herramientas más simples que si vamos a obtener centenares de miles de registros o millones. En este último caso, por el tiempo de scrapeado y el elevado número de registros a obtener, necesitaremos otro tipo de técnicas, de herramientas y de recursos a emplear.
      Algunas técnicas nos van a permitir extraer sobre los 20 registros por minuto, no eches cuentas.
  3. La accesibilidad de los datos origen: aquí vamos a considerar dos handicaps:
    • Según la estructura de presentación de los datos: si todos los datos a extraer están en una única página o si están en varias páginas. Y si están en forma de ficha o de tabla (un único dato por página o varios datos por página).
    • Según la manera en que la página web los presenta: Los datos se pueden mostrar solicitando una página web específica para cada dato o conjunto de datos, es decir, podemos obtener el enlace de los datos, o por el contrario, desde la misma página web se van cargando dinámicamente y presentando los datos usando javascript y/o técnicas AJAX.

 

3 Alternativas para realizar web scraping

Tecnológicamente hablando podemos usar tres alternativas:

  1. Usar un servicio de web scraping: Podemos optar por alguno de los servicios web que nos permiten extraen datos estructurados de la página web que queramos. Algunos de ellos tienen la ventaja de que si la web de origen está bien estructurada, la inteligencia del crawler podrá extraer los datos de una manera automática, ahorrándonos mucho tiempo, pero en otros hemos de escribir las reglas de extracción. Algunos suelen contar con un “Free Plan” o servicio de web crawling gratis.
    En su momento hubo un boom de este tipo de servicios, pero han desaparecido muchos.
    – Ventajas -> Si queremos hacer un scraping en una web de datos que otros ya han extraido, el trabajo será mínimo puesto que las reglas para realizar el scraping ya las habrán creado otros. Para algunos de estos servicios, según el tipo de extracción de datos que queramos, necesitaremos solamente unos conocimientos técnicos mínimos.
    El tiempo de proceso y las optimizaciones necesarias estarán a cargo del servidor del servicio de scraping que usemos, que además tendrá sus propios mecanismos para evitar las contra-medidas anti-scraping que pudiesen implementar los sitios web para bloquear el web scraping, como sería el uso de pools de proxys que utilizan múltiples IPs diferentes.
    – Inconvenientes -> No tenemos el control del procedimiento de extracción, por lo que estamos limitados a la funcionalidad que implemente el servicio web de scraping elegido. Además de que los datos scrapeados se han de descargar del servidor, el proceso y eventualmente los datos, pueden hacerse públicos.
    En la mayoría de servicios de web scraping gratuitos, si queremos scrapear webs extensas o hacerlo de manera frecuente, tendremos que contratar algún plan, por lo que el precio del servicio también lo hemos de tener en cuenta para decantarnos por uno u otro.Algunos de estos servicios son: 80legs, DatahutImport.IOiWebScraping.com, Datahen, Grepsr, Scrapinghub.
    – Precios -> Los precios de estos servicios suelen estar de media sobre los $250/site, es decir, por web scrapeada. Algunos servicios incluyen suplementos por volumen de datos o por poner en marcha el servicio, y otros una cuota mensual mientras se quiera reutilizar el scraping.
  2. Usar una solución desktop para web scraping local: Desde nuestro PC, ya sea usando los navegadores Mozilla Firefox y Google Chrome y alguna extensión para screen scraping, o usando programas para realizar scraping, podremos montar las reglas para nuestro web crawler. Este tipo de solución es más adecuada para operaciones puntuales ya que requieren intervención manual y no están orientadas a ser ejecutadas automáticamente. Evicentemente tenemos que tener algunos conocimientos y la habilidad para poder programar las reglas, y tiempo, mucho tiempo.
    – Ventajas -> Hay algunas opciones para realizar un scraping gratis, y las podremos lanzar con la frecuencia que queramos y sin límites de tiempo o de datos a descargar. Contamos con mayor flexibilidad que usando un servicio online, la misma facilidad pero con mayor potencia y control sobre los datos y las fórmulas de extracción. Suelen incorporar ayuda visual para montar las reglas de scraping, por lo que nos pueden fácilitar mucho su uso.
    – Inconvenientes -> Hemos de tener encendido el PC para lanzar el proceso de web scraping y algunas de las herramientas no permiten realizar la extracción de manera programada. La mayoría de este tipo de programas es relativamente fácil que sean bloqueados por las web, usando el servidor web o desde el propio CMS, y no cuentan con facilidades para evitar este bloqueo.
    Alguna de estas soluciones son: FMiner, OutWit Hub, Scraper, USCIS Scraper, Web Scraper, Screen-Scraper, DataMiner, FB UID Scraper, ScreenScraper, HTML Regex Data Extractor, TableTools2, OpenRefine, Kimono, artoo.js.
    – Precios -> Las extensiones para navegadores nos permitirán hacer un scraping gratis (si tu tiempo no cuesta nada), y los precios de los programas van desde menos de 100€ para las versiones simples, hasta los 1000€ por los más profesionales.
  3. Programar el algoritmo de web scraping: utilizando un lenguaje de programación y sus clases nativas o con alguna librería o framework específico podemos crear el algoritmo de extracción para nuestro screen scraping. Al estar hecho a medida, esta es la solución que aporta mayor flexibilidad y con mayor integración. Si uno dispone ya de los recursos necesarios no tiene porque tener un coste mayor que algunas de las otras soluciones. Podremos programar automáticamente extracciones con la frecuencia que deseemos, gestionar errores y adaptarnos a los cambios de la web origen con mayor flexibilidad o saltar las contra-medidas anti-scrapers.
    – Ventajas ->Es el método más adecuado para realizar scrapings complejos, muy frecuentes o de mucho volumen de datos. Podemos adaptarlo completamente a nuestras necesidades, programas alertas o avisos para detectar errores, cambios o contra-medidas.
    Puede escalar para realizar web scraping masivos, de miles de webs en paralelo y obteniendo ingentes cantidades de datos.
    Lo podremos ejecutar desde un PC, en servidores de nuestra red, o contratando un servidor en algún proveedor de alojamiento web de Internet (ISP).
    – Inconvenientes -> Si no se implementan las medidas necesarias, puede ser bloqueado por la web a scrapear. Requiere de conocimientos técnicos altos, programadores especializados, y un continuo mantenimiento para ir adaptándolo a los cambios.
    Como cualquier otro proyecto de programación a medida, es un proceso que requiere de una inversión en tiempo y dinero.Algunas de las herramientas útiles son: DOMXPath, Guzzle, CasperJS / pjscrape (PhantomJS, SlimerJS), Scrapy, Noodle, Beautiful Soup, Selenium WebDriver, PHPCrawl, Sphider, Mechanize, HarvestMan, PHP-Spider, Simple HTML DOM , Web-Harvest, Nightmare, Zombie, SpookyJS.
    – Precios -> Si sabes y dispones de tiempo, puedes programarte un scraper barato a tu gusto. Pero si lo te lo han de programar a medida, el precio de la programación del bot para el scraping puede ser bastante caro, especialmente por el coste del mantenimiento, mejoras y optimizaciones a lo largo de su vida útil. 

Problemas al realizar el web Scraping

Cuanto más interesantes sean los datos proporcionados por una web, con más celo los protegerán e intentarán evitar las técnicas de web scraping.

  1. Sesión de navegación. Necesitaremos entrar por alguna página inicial para establecer una sesión de navegación (cookie de sesión) y así validar el acceso a los datos.
  2. Uso de Javascript: Tanto la presentación de los datos como el acceso a las siguientes páginas de los mismos pueden estar generados mediante javascript y técnicas Ajax. En estos casos vamos a necesitar una herramienta que incorpore un motor de Javascript, son las soluciones tipo browser headless y complementos de navegador web.
  3. Bloqueos: Los accesos a una web que no se corresponden con acciones humanas, como son el número de páginas solicitadas por minuto, no solicitar todos los elementos de la página html, navegador no identificado, identificador “User-Agent” sospechoso, etc, pueden provocar el bloqueo de la IP y/o la solicitud de un CAPTCHA.
    Para estos casos, además de “ocultar” la presencia de nuestro “bot” al servidor web, vamos a tener que usar un pool de proxys, que nos permite usar diferentes IPs en cada solicitud, y un servicio de resolución de CAPTCHAs (captcha solver service), como DeCaptcherDeathByCaptcha o Anti-Captcha.

Cuando nos encontramos con alguno de estos handicaps, posiblemente nos esté dando a entender el dueño de la información o del sitio web que no quiere que la extraigamos. Convendría mirar atentamente los “términos legales de la web” y tener en consideración los aspectos legales por la utilización de los datos obtenidos mediante web scraping.

 

Ámbito legal del web scraping

El último e importante factor a tener en cuenta son las implicaciones legales. No es la primera startup que basa su negocio en el scraping de otras webs, y tras ser denunciada por competencia desleal o temas de protección de datos, tiene que reorientar su negocio.

En uno de mis proyectos de scraping, además de asesorar técnicamenta al cliente, despues de asesorarle legalmente sobre las repercusiones que podría llegar a tener el scraping, con el soporte de un letrado conseguimos salvar el handicap jurídico y mantener la idea original, aunque hubo que replantear la concepción inicial del scraping.

Cosas que has de tener en cuenta antes de empezar un proyecto de web scraping son: la legalidad vigente en el país de origen, las condiciones legales del sitio web, si podrías llegar a violar los derechos de autor, de propiedad intelectual o de uso de marca registrada, si el usar los datos podría considerarse como competenecia desleal (imitación, publicidad comparativa, denigración de la reputación u otras lesiones de derechos, violación de secretos, …), derecho ‘sui generis‘, etc.

Si no vas a hacer un uso público de los datos scrapeados, es decir, es solo para ‘consumo propio’, scrapear un sitio web será tan legal como pueda serlo acceder a sus datos con un navegador web.

Consulta siempre los “Términos de Uso” y la página de “Aviso legal” para tener toda la información disponible.

Defensas contra el web scraping

Y para terminar, hemos de considerar si es importante para nuestro negocio establecer contra-medidas para evitar el scraping desleal de nuestro sitio web. Para ello hemos de combinar diferentes medidas de índole técnico para prevenirlo así como acciones para detectarlo y si se tercia, poder realizar actuaciones legales.
Es aconsejable contar con un experto que nos asesore o que nos valide los mecanismos implementados, ya que no es infrecuente implementar contra-medidas que no son lo eficaces que pensábamos.
Pero esto ya es un tema para otro artículo..


Dejar un comentario

Para comentar has de leer y aceptar la Política de privacidad.

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

4 ideas sobre “Alternativas para realizar web scraping

    • FelicianoBV Autor

      Hola Osr,
      no entiendo para que quieres extraer el menú lateral, si no he entendido mal, lo que has de hacer es poner donde quieras un giny de menú con el mismo menú lateral.
      Mira en la opción de WordPress de creación de los menús, selecciona y edita el que aparece en el theme.

  • Juan Carlos

    Hola Feliciano, soy nuevo en todo este tema aquí donde resido existe una página de ventas en Facebook que es free donde uno puede vender lo que desee, quisiera poder acceder a la data genera por estás ventas para ver las tendencias del mercado… Muchas gracias

  • Cristian

    Hola Feliciano! Antes que nada, agradecer esta nota tan interesante.
    Te queria consultar sobre que soft (Libre) o aplicación o extensión para navegador me recomendarías, lo que necesito puntualmente es extraer datos de formularios online y poder bajarlos (preferiblemente en formato csv o xlsx).
    A modo de ejemplo, te paso este sitio del que debería extraer la información de todos los campos (Tomo, Folio, Apellido, etc) y con eso crear un archivo excel:

    http://2OO.51.4O.211/matora/