Web Scraping: qué es y cómo funciona
Aunque controvertida, la técnica de extracción de datos denominada Web Scraping puede usarse de manera responsable, para tareas totalmente lícitas y sin afectar al funcionamiento de los servidores.
¿Qué es el Web Scraping?
Web Scraping es una técnica utilizada para extraer información de sitios web de forma automatizada, a través de scripts o programas que recorren las páginas web y hacen acciones como si fuera un usuario normal. Mediante esta práctica se puede obtener información detallada publicada en otras páginas, ya sea texto, imágenes u otros elementos que puedan estar disponibles en el contenido de la web.
Puede ser una práctica útil para automatizar sistemas de análisis, que nos puede quitar horas de trabajo y navegación manual, así como obtener datos de manera masiva. Luego veremos algunos ejemplos de uso de manera detallada y algunas otras claves que nos pueden abrir ideas, manteniendo siempre un uso responsable.
¿Cómo funciona el Web Scraping?
Para realizar Web Scraping simplemente tenemos que realizar el acceso al contenido HTML que hay en los servidores de Internet, procesándolo de la manera que sea necesaria para obtener la información deseada. El proceso en detalle consta de los siguientes puntos.
La solicitud HTTP al servidor web
Web Scraping se realiza de la misma manera que se navegaría a través de un cliente web, es decir, realizando una solicitud HTTP a un servidor. La única diferencia es que en vez de un navegador esta solicitud se realiza mediante código en algún lenguaje que permita conectarse por HTTP para obtener contenido de la web.
Como respuesta el programa recibe el contenido HTML que figura en la página que ha solicitado.
Análisis del HTML
Una vez obtenido el HTML el programa debe analizar la estructura del código recibido mediante analizadores de documentos que sean capaces de interpretar el HTML y acceder a sus distintas partes. Esto se suele hacer como cuando seleccionamos nodos de un árbol DOM, en el típico uso de CSS para aplicar estilos u otras librerías como el clásico jQuery..
Así se consigue acceder a cualquier contenido del documento, ya sean etiquetas específicas, etiquetas que tengan identificadores dados o clases CSS, para leer el contenido que hay en ellas.
Extracción de los datos deseados
Después de realizar el análisis del HTML, para saber dónde está aquello que nos interesa, se puede extraer la información que se necesita. Para ello nos centraremos en el elemento o elementos contienen el dato/s que se desea obtener, como el título de la página, el precio de un producto, su descripción, o cualquier otro dato relevante para nosotros.
Almacenamiento de los datos recopilados
Generalmente, una vez obtenidos los datos que se requerían, se almacenarán en algún soporte, ya sea una base de datos, ficheros de texto, archivos de hojas de cálculo, etc. Una vez tenemos los datos almacenados con el soporte adecuado para nosotros, podemos procesarlo para realizar cualquier tipo de acción que requiera nuestro negocio.
Herramientas y técnicas comunes para el Web Scraping
Podemos realizar Web Scraping con diversos tipos de herramientas pero generalmente utilizaremos un lenguaje de programación y alguna librería que nos permita realizar el análisis de las páginas web de una manera más cómoda.
Lenguajes de programación populares
Prácticamente cualquier lenguaje de programación popular es adecuado para realizar Web Scraping, ya que casi todos son capaces de realizar solicitudes HTTP a servidores. No obstante lo común es utilizar lenguajes de programación como PHP, Python, JavaScript en la plataforma NodeJS, aunque también serían válidos otros como Java o C#.
Librerías y frameworks de Web Scraping
Dentro del lenguaje de programación que hayamos escogido existirán bibliotecas de código que nos permitan analizar el HTML y extraer los datos de una manera sencilla. Algunos ejemplos son:
- Para Python tenemos BeautifulSoup o Scrapy.
- Para JavaScript podemos usar alguna herramienta como Selenium para interactuar con la web y Cheerio para extraer el contenido.
- Para PHP puedes usar Goutte o simplehtmldom.
Estos son solo unos pocos ejemplos. En cada lenguaje encontrarás más alternativas para realizar este trabajo de obtención de datos e interpretación del HTML.
Uso de API vs. Web Scraping tradicional
Como contrapartida al Web Scraping también es importante saber que muchas páginas web ofrecen sus datos en forma de API, por lo que no siempre es necesario realizar todos los pasos anteriores. Si el sitio web ofrece un API es mucho más sencillo obtener la información a través de él, ya que nos ofrecerá los datos estructurados listos para poder usarlos donde los necesitemos.
Además, el uso del API es mucho más responsable, ya que está pensada justamente para ofrecer la información que ellos consideran que podría ser interesante por otros agentes.
Incluso a veces no necesita ser un API tradicional. Por ejemplo, un sitio de comercio electrónico podría ofrecer una hoja de cálculo descargable en la cual se encuentren sus productos y los precios ofrecidos, para que las plataformas de comparación de precios puedan obtener esos datos de manera sencilla.
¿Para qué se utiliza el Web Scraping?
Ahora vamos a ver algunos ejemplos comunes de prácticas en las cuales se utiliza Web Scraping para obtención de datos y su posterior análisis.
Análisis de la competencia y precios
Algunas empresas utilizan las prácticas de scraping para obtener datos de sus competidores. Estos datos pueden ser productos que tienen a la venta con sus descripciones o la disponibilidad.
Con esa información las empresas pueden ajustar sus propios precios en función del mercado, de una manera automática o semiautomática.
Investigación de mercado y generación de leads
También se puede realizar Web Scraping para obtener datos profesionales y contactos de empresas que están disponibles de manera pública en Internet. Gracias a ellos es posible extraer perfiles que nos permitan luego realizar campañas de marketing con la intención de generar leads.
También podría servirnos para analizar el mercado, detectando tendencias de consumo o intereses que nos permitan ajustar nuestras estrategias.
Monitorización de noticias y redes sociales
También es muy frecuente realizar scrapping para monitorizar determinadas cuestiones que nos resulten relevantes en sitios de noticias o en redes sociales, evitando mucho trabajo manual de investigación, que puede llegar a ser bastante tedioso.
Por ejemplo, una marca podría realizar Web Scraping para detectar apariciones en medios o menciones en redes sociales, de modo que pueda estar informada y controlar su reputación online de una manera más sencilla.
Agregación de contenido y datos
Algunas empresas utilizan Web Scraping para agregar contenidos a sus sitios web. Ejemplos típicos serían plataformas de comparación de precios o metabuscadores que añaden información especializada desde varias fuentes.
Mejores prácticas en Web Scraping
Las prácticas de Web Scraping deben realizarse de manera respetuosa con los sitios web a los cuales se accede para obtener la información deseada. Para asegurarnos de realizar nuestras actividades de una manera adecuada vamos a ver algunas prácticas que no debemos dejar pasar:
Respetar el archivo robots.txt
En los sitios web existe generalmente un archivo llamado robots.txt. Este fichero se utiliza sobre todo para asuntos reaccionados con el SEO, que podemos aprender en algunos post y cursos de nuestra web, por ejemplo: Robots.txt: qué es y cómo generarlo para posicionar en Google
Lo que debemos saber en este punto es que robots.txt ofrece información sobre secciones que se pueden o no acceder por los sistemas de recuperación automatizada de información, así como directrices que también deberíamos respetar como el tiempo de espera entre solicitud y solicitud. No es que exista un imperativo legal, o algo parecido, según el cual debamos respetar la información que contiene este archivo, pero lo lógico y responsable sería tener en cuenta esas directrices.
No sobrecargar los servidores web
Además, debemos saber que los servidores tienen cierta capacidad para atender a los usuarios, incluso entender que no solo están ahí para cubrir nuestras solicitudes, sino que tienen que responder a las de todos los otros usuarios. Es por ello que los sistemas automatizados deberían regularse para realizar solicitudes con los suficientes tiempos de espera, que eviten sobrecargar al servidor que estamos consultando.
Manejo responsable de los datos extraídos
Por supuesto también debemos ser responsables con los datos que estamos obteniendo, ya que no todos los tipos de acciones estarían permitidas, ya sea por imperativos legales (atendiendo a leyes como el Reglamento General de Protección de Datos) o por las condiciones de servicio que nos dicte el propio sitio web.
Por ejemplo, no deberíamos realizar Web Scraping para robar datos personales de usuarios, o tampoco republicar el contenido que hemos obtenido en otras páginas web.
Simulando usuarios reales para evitar bloqueos
Ya con respecto a las técnicas que debemos usar, para poder realizar una obtención de la información más efectiva, conviene realizar el scraping evitando dar señales de comportamiento automatizado. Por ejemplo, construyendo las cabeceras HTTP adecuadas, utilizando agentes de usuario variados o empleando servidores intermedios para que nuestras conexiones no provengan siempre de la misma IP.
De este modo, reduciremos las probabilidades de ser detectados como uso fraudulento y bloqueados por el servidor.
Ajustar los scripts a los cambios web
También es muy importante que ajustemos nuestros scripts a lo largo del tiempo, ya que puede haber cambios en la estructura del código HTML que recibimos como respuesta. Si ocurre esto es muy probable que nuestros scripts de análisis del contenido fallen y no obtengan la información de manera correcta.