Web scraping

Se denomina web scraping o extracción de datos web, a una técnica que consiste en extraer información de sitios web mediante un software que simula la navegación de un humano por la web. El web scraping es similar a la indexación web realizada por los spider de los buscadores, pero orientado a extraer información estructurada que pueda ser almacenada y analizada.

Web scraping

Qué es web scraping

Se llama web scraping a una práctica que básicamente consiste en extraer información de sitios web.

El web scraping está estrechamente relacionado con la indexación web, que una técnica universal adoptada por la mayoría de los motores de búsqueda que indexa la información en la web utilizando un robot.

Sin embargo, a diferencia de los buscadores que indexan los contenidos web en base a palabras clave, el web scraping se centra más en la transformación de los datos no estructurados en la Web, por lo general en formato HTML, en datos estructurados que puedan ser almacenados y analizados en una base de datos o una hoja de cálculo.

El web scraping también está relacionado con la automatización web, ya que simula la navegación humana utilizando software.

Por otro lado, el web scraping también comparte objetivos con la web semántica, una ambiciosa iniciativa que pretende que los datos contenidos en la web sean legibles para las máquinas, aunque para ello0 aún requiere notables avances en el procesamiento de textos, la comprensión semántica, la inteligencia artificial y la interacción hombre-máquina.

Entre las aplicaciones del web scraping encontramos la comparación de precios online, seguimiento de datos meteorológicos, monitorización de la bolsa, detección de modificaciones en páginas web, agregadores e integración de datos en aplicaciones mashup.

El web scraping generalmente se hace mediante un software automático que simula la navegación de un humano por la web, pero esto no siempre es así, existiendo diversas herramientas y niveles de automatización:

  • Copiar y pegar: en ocasiones, incluso la mejor tecnología de web scraping no puede reemplazar el examen manual de un ser humano y copiar-pegar, y a veces puede ser la única solución viable cuando los sitios web objetivo establecen explícitamente barreras para evitar la automatización de máquinas.
  • Concordancia en expresiones regulares: un enfoque simple pero potente para extraer información de las páginas web se basa en el comando grep de UNIX o en las funciones de expresiones regulares de lenguajes de programación como Perl, Python o PHP.
  • Programación HTTP: las páginas web se pueden recuperar simplemente mediante el envío de solicitudes HTTP al servidor web remoto usando programación a nivel de socket o aplicación de bajo nivel del protocolo de transferencia de hipertexto (HTTP).
  • Algoritmos de minería de datos (data mining): los programas de minería de datos extraen el contenido de sitios web que contienen grandes colecciones de páginas generadas dinámicamente desde una fuente estructurada, como una base de datos.
  • Análisis sintáctico DOM (DOM parsing): mediante el uso de un navegador web como Internet Explorer o Mozilla Firefox, se pueden recuperar y analizar las páginas web en un árbol DOM (Document Object Model, Modelo de objetos del documento), generalmente en base a plugins o código embebido.
  • Analizador sintáctico HTML (HTML parser): mediante lenguajes de programación se pueden analizar las páginas HTML para recuperar y transformar el contenido de la página.
  • Software para web scraping: existen muchas herramientas de software específicas para realizar web scraping, que permiten reconocer automáticamente la estructura de datos de una página, proporcionan una interfaz de grabación que elimina la necesidad de escribir manualmente el código de web scraping, y disponen de funciones que pueden ser utilizadas para extraer, transformar y almacenar el contenido de la página web en bases de datos locales.
  • Reconocimiento de etiquetas semánticas: el software de web scraping suele reconocer metadatos semánticos, como los microformatos, que se pueden usar para localizar fragmentos de datos específicos, que conforman una capa semántica separada del contenido de la páginas web.

Por otra parte, existen diversas medidas técnicas que los webmaster pueden implementar en sus sitios web para combatir, detener o disminuir el web scraping, entre ellas:

  • Los buscadores suelen respetar las indicaciones del archivo robots.txt, por lo que agregando entradas se puede detener la indexación.
  • Bloquear la dirección IP del robot, lo que también bloqueará toda la navegación de esa dirección.
  • Desactivar o limitar las API de servicios web minizará la exposición.
  • Algunos motores de búsqueda veces declaran que lo son, lo que permite bloquearlos, aunque otros no hacen ninguna distinción entre ellos y un explorador humano.
  • Bloqueo por control del exceso de tráfico.
  • Muchos bots se pueden bloquear con herramientas para comprobar que es una persona humana la que accede al sitio, como un captcha, aunque muchos bots son programados para romper patrones captcha.
  • Usar imágenes o sprites CSS para mostrar datos como números de teléfono o direcciones de correo electrónico, a costa de la accesibilidad para los usuarios.

Por último, mencionar que el web scraping puede ir contra las políticas legales de determinados países, por lo que es necesario aplicarlo con cuidado.