Automatización de scroll infinito en web scraping con Selenium

Clase 12 de 15Curso de Web Scraping con Python

Resumen

El scraping en páginas con scroll infinito puede presentar desafíos específicos, especialmente cuando se trata de páginas que cargan contenidos adicionales al desplazarse. Con este método, es posible capturar más información conforme se interactúa con la página web.

¿Por qué agregar interacción con scroll en scraping?

Cuando trabajamos con páginas con scroll infinito, solamente obtenemos una parte del contenido si no interactuamos con el desplazamiento. Al incluir la función para realizar scroll, podemos extender significativamente la cantidad de datos recuperados, pasando, por ejemplo, de 10 frases iniciales hasta una cifra mucho mayor.

¿Cómo implementar la interacción con scroll en nuestro scraper?

Primero, utilizamos el mismo navegador web automatizado (driver) que ya conocimos, realizamos la petición a la URL, pero añadimos un script específico que realice el scroll regularmente en la página web.

Definir el tiempo de espera entre scrolls

Esto depende exclusivamente del tiempo que tarda la página en cargar o renderizar el contenido:

  • El tiempo elegido en el ejemplo fue de dos segundos.
  • Se recomienda aumentar o disminuir según las condiciones de carga de cada sitio.

Obtener y actualizar la altura de la página

Para realizar el scroll correctamente necesitamos conocer la altura actual de la página. Utilizamos scripts que obtienen ese valor y actualizamos con cada scroll para mantenernos sincronizados:

window.scrollTo(0, document.body.scrollHeight);

Es importante ejecutar este comando repetidas veces para cada desplazamiento, añadiendo siempre un tiempo de espera posterior.

Detectar los elementos relevantes en la página

Usamos herramientas como By.class_name para capturar elementos específicos tales como:

  • Frases identificadas con la clase quote.
  • Autores correspondientes.

Con esto logramos seleccionar precisamente los datos que nos interesan.

¿Qué resultados debemos esperar?

Al seguir este proceso, pasamos de capturar originalmente 10 frases sin interacción alguna, hasta cerca de 40 u 80 frases después de tres iteraciones o desplazamientos. Considera que la carga de datos en páginas con scroll infinito puede variar en volumen entre cada iteración, debido a la aleatoriedad en la generación de contenidos.

¿Qué hacer si llegamos al final del scroll?

Si nuestra página no es infinita y el scroll termina en algún momento, debemos configurar condiciones que detecten ese punto final y corten el proceso adecuadamente.

Esto es especialmente útil en páginas con contenidos limitados, aunque en el caso presentado con scroll infinito esto no suele ocurrir.

¿Has implementado alguna vez un scraper con scroll infinito en Python? ¡Comparte tu experiencia en los comentarios!