¿Qué es el Web scrap? Explicado de forma simple no es más que «rascar» una página Web para obtener información de la misma. Así de sencillo.
¿Qué tipo de información podemos obtener de una página Web? Cualquiera que se presente en la misma: imágenes, vídeos, ficheros adjuntos, documentos, o bien la misma información textual que aparece en ella. Datos numéricos, textos, etc.
Las razones para capturar datos de una página puede ser muy variados. Desde el deseo de salvaguardar su información, según nuestros deseos, hasta obtener datos para ser más tarde tratados. En el primer caso, quizás nos interesa guardar una galería de imágenes completa, sin tener que hacer clic en cada imagen de forma manual. O quizás descargar algunos ficheros adjuntos, tales como libros, vídeos, música, etc. En el segundo, quizás queramos capturar información de horarios de trenes, reservas de hotel, precios de productos, cualquier cosa.
En todo caso antes de cualquier proceso de captura tenemos que investigar cómo funciona la página Web en cuestión. Para ello hay que seguir los pasos necesarios, de forma manual, para llegar hasta la información deseada. Y en cada paso, examinar las entrañas de la página en cuestión. Esto es, ver el código fuente para localizar los elementos que contienen la información buscada.
Por tanto, el primer requisito es contar con un navegador que permite inspeccionar los elementos de la página, o cuando menos, ver el código fuente completo. Prácticamente todos los navegadores permiten lo segundo. Lo primero, es posible que necesite que activemos o instalemos lo que se llama «herramientas de desarrollo» para poder investigar concienzudamente el contenido de dicho código fuente con cierta ayuda.

El segundo, conocer el lenguaje HTML o HTML5. Es básico para saber qué estamos observando en esa pantalla. Si no, nos parecerá poco menos que el código de Matrix.
HTML utiliza lo que se conoce como etiquetas. Estas actúan, en su mayor parte, como contenedores. Los hay de diversos tipos, como DIV, para diferenciar bloques, P, para párrafos, LI, para listas, A, para los enlaces o links, etc. Además, para que dichas etiquetas sean «únicas» o al menos pertenezcan a un mismo tipo, éstas pueden tener atributos que indiquen una clase determinada (usadas para aplicar estilos CSS, por ejemplo), o incluso un identificador único dentro de toda la página (con frecuencia esto se usa en los formularios de entrada de datos).
De cualquier modo, lo interesante es que los contenedores que queramos leer sean lo más inequívocos posibles. Así estaremos asegurando que leemos un dato concreto y no otro.
Cuando digo «leer» me refiero a que un programa debidamente escrito sea capaz de encontrar un dato sin posibilidad de error. O no encontrarlo en absoluto.
¿Y con qué escribimos dicho programa?
Depende del gusto personal. Hay muchos lenguajes de programación, y muchas librerías que permiten hacer la lectura de páginas Web. Incluso hay utilidades de terminal, es decir, que se ejecutan como un comando de línea, que son factibles para el scraping. Por ejemplo, CURL o WGET. Para usos sofisticados es muy complejo sacarles partido, pero es posible.
Mi opción personal es el lenguaje Python junto a un par de librerías básicas: requests y BeautifulSoup. Ambas en conjunto permiten leer una dirección URL y pasarla por un parser o intérprete de texto para aislar los elementos HTML (las etiquetas o contenedores) y sacar partido de los mismos.
La instalación del lenguaje, si es que no está disponible en nuestro sistema, es bastante fácil. Desde la página oficial de Python, http://www.python.org podemos instalar el lenguaje para cualquier sistema operativo soportado.
Asimismo, las librerías o módulos de terceros para Python suelen ser instalables con el comando pip, de esta forma:
pip install módulo
donde módulo es el nombre de la librería. Por ejemplo:
pip install bs4
instalará BeautifulSoup versión 4, y
pip install requests
instalará la versión más reciente de la librería requests.
Resumiendo, con Python y esas dos librerías ya podemos armar un Web scrap.
Dificultades
Superados los requisitos anteriores, es decir, sabemos qué lenguaje usar, conocemos HTML para identificar elementos, etc. el Web scrap no está exento de dificultades. Algunas de las más frecuentes son:
- La página Web no nos permite usar ningún tipo de lectura mecanizada, es decir, detecta que no es un humano quien interactúa con ella.
- La página se carga y completa mediante Javascript o similar, lo cual quiere decir que nuestro programa no verá la página tal como un humano, ya que ésta se genera después de cargar el código fuente, ejecutando una serie de procesos de forma asíncrona.
- Se requiere la identificación del usuario, esto es, hay un formulario para introducir el usuario y clave de acceso. Da los mismos problemas que el caso anterior.
- La programación dinámica de la página sólo funciona con interacción humana, por lo que es necesario simular la misma.

Antes de tratar con estos casos, hay que decir que existen miles y miles de páginas que no ofrecen esta resistencia y se pueden aprovechar para el proceso de scrap. Así que no hay que desanimarse. Para todo lo anterior existe la librería Selenium. La veremos en otra ocasión.