El web scraping es el proceso de extraer la información de una página web de forma automatizada. Si estás aquí posiblemente ya lo sabías y no te ha pillado por sorpresa.
Lo cierto es que el web scraping es más un arte que un proceso de ingeniería. Cada web es distinta y no hay una forma correcta de hacer las cosas.
Obtener la información de una web requiere normalmente algo de tiempo y dedicación.
Hay que estudiar cada página y ver cómo funciona. ¿Qué información necesitamos? ¿Cómo carga esta información la web?
Repasemos lo más básico en esta introducción al web scraping.
Para empezar, veamos de qué forma se envía la información desde el servidor a nuestro ordenador y como la interceptamos antes de procesarla.
El web scraping se basa en dos acciones o tareas:
- Realizar una petición HTTP.
- Procesar la respuesta en HTML para extraer los datos.
Vamos a analizar brevemente estos dos conceptos fundamentales.
Las peticiones HTTP
Lo primero que hemos de entender, aunque a veces no se le preste atención, es el tipo de petición o request method utilizado. La mayoría de peticiones se realizan a través de GET, el cual que nos permite solicitar información al servidor web.
En este caso, el navegador envía una petición GET al servidor esperando que este le devuelva la información solicitada en la URL.
Viéndolo de una forma esquemática, es así de sencillo:
Bueno, ¿pero donde vemos toda esta información? La puedes ver desde la pestaña network de Chrome, y te aconsejo que pruebes a visualizar estos datos por ti mismo en el navegador como ejercicio.
Otra información que se envía desde el cliente web es el encabezado o request headers, haciéndole saber al servidor que tipos de documento podemos aceptar, el idioma, y otros metadatos como pueda ser la versión navegador que está accediendo a esa página (datos enviados desde el User-Agent).
Resumiendo, una petición HTTP estará formada por:
- La URL.
- El método de petición o request method: GET, POST, etc.
- Las cabeceras o headers: User Agent, Cookies, etc.
- Los parámetros de la consulta (Query Arguments) o POST Body: extra, optional
Los parámetros o argumentos de la consulta es cuando introducimos variables en la ruta, por ejemplo al realizar una petición como esta: http://example.com/?pagina=5
Se enviará una nueva información al servidor, no solo en la petición sino como un parámetro para realizar la consulta. Al inspeccionarlo desde Chrome veríamos algo así:
Toda esta información extra se la podemos hacer llegar al servidor web desde nuestro navegador.
A menudo tendremos que enviar estos parámetros de forma manual para poder comunicarnos con el servidor web.
La respuesta HTML
Ahora hablaremos sobre qué es la respuesta HTML y el DOM.
Para que sea más sencillo lo veremos con un ejemplo práctico.
En el apartado anterior habíamos visto algunos datos que nos vuelca Chrome desde la pestaña Network.
Pero la mayoría de respuestas del servidor web vienen en forma de documento HTML y para ver la respuesta HTML, tendremos que seleccionar la pestaña Elements.
Quizá la forma más rápida es pulsar la tecla F12 o si queremos visualizar todo el código fuente podemos acceder con la combinación CTRL+U.
Para acceder a partes específicas de la web, pulsamos sobre ellas con el botón derecho del ratón y seleccionamos inspeccionar. Con esto conseguiremos ver el código fuente perteneciente a esa sección.
El código está estructurado en varios niveles. No es necesario ser un experto en HTML para poder diferenciar que existen bloques que contienen otras secciones. A este tipo de estructura se la conoce como DOM o Modelo de Objetos del Documento, y viene a ser una estructura anidada de información.
Esto es exactamente lo que obtiene un Navegador de Internet al hacer una petición web y a partir de ahí mostrará el contenido de forma visual.
Por ahora y para terminar, vamos a resumir algunas propiedades básicas del HTML:
- El HTML es simplemente un documento de texto
- Existe un conjunto de elementos o etiquetas englobadas entre <símbolos>.
- Los elementos están anidados unos dentro de otros.
- Estos elementos tienen atributos, del tipo class=»».
- En general, existen patrones de elementos y atributos (repeticiones).
- El Inspector de Chrome nos permitirá ver el HTML de una página.
Con estos conceptos tenemos todo lo suficiente para entender qué tenemos entre manos antes de comenzar con la extracción de información de una web.