Clase magistral de raspado dinámico
Técnicas de expertos en Puppeteer, Playwright y Selenium
44:56
intermediate
June 25, 2024
¿Tienes problemas con el contenido dinámico y los datos asincrónicos en el raspado web? En este seminario web abordaremos los problemas más comunes a los que se enfrentan los desarrolladores. Aprende soluciones prácticas para los problemas de raspado web dinámico con los que se encuentran los desarrolladores. Obtendrás información sobre cómo escalar la infraestructura de su navegador para operaciones de raspado a gran escala. Este seminario web está diseñado para ayudarlo a superar estos desafíos y mejorar significativamente sus capacidades de raspado web.
En este seminario web en vivo de 45 minutos, aprenderás a
  • Lidiar con la limitación de velocidad y el bloqueo de IP
  • Gestionar el cambio de localizadores y clases HTML
  • Navegar por el enrutamiento del lado del cliente en los SPA
  • Gestionar datos cargados de forma asincrónica
  • Simular las interacciones de los usuarios para la carga diferida
  • Acceder a los datos dentro de los componentes de Shadow DOM
  • Garantizar capturas de pantalla de página completa del contenido dinámico
  • Ampliar la infraestructura del navegador para una recopilación a gran escala
Comienza tu prueba gratuita
Comienza tu prueba gratuita
Speakers
Darío Kondratiuk
Desarrollador web y MVP de Microsoft
Diego Molina
Líder técnico en Sauce Labs
Greg Gorlen
Ingeniero de software integral

Introducción al raspado web dinámico

El raspado web consiste en extraer datos de sitios web, lo que puede resultar especialmente difícil con contenidos dinámicos que cambian con frecuencia. Nuestros expertos, Greg, Dario y Diego, brindaron consejos prácticos para superar estos desafíos con herramientas como Puppeteer, Selenium y Playwright.

Greg: residente en San Francisco, Greg trabaja en Andela y está especializado en ingeniería de software tradicional y raspado web.
Darío: de Argentina, Darío trabaja con Mabel y se centra en herramientas de automatización de control de calidad con poco código y contribuye a la versión .NET de PuppeteerSharp y Playwright.
Diego: Diego viene de Valencia (España) y es uno de los líderes del proyecto Selenium y líder de código abierto en Sauce Labs, una plataforma de pruebas en la nube.

Puntos clave de debate

1. Mantenerse al día con los cambios de HTML

Greg hizo hincapié en la importancia de elegir selectores confiables. Evitar largas cadenas de selectores codificados como div > div > p. En su lugar, usa selectores más estables como aria-label o selectores basados en texto. Aún mejor, intercepta las solicitudes de API siempre que sea posible, ya que es menos probable que cambien que el DOM.

Herramientas y técnicas:

  • Legibilidad de Mozilla: convierte HTML complejo en un formato limpio y legible.
  • Intercepción de API: acceder directamente a los puntos finales de datos para evitar los cambios en el DOM.

2. Navegar por el enrutamiento del lado del cliente y las aplicaciones de una sola página (SPA)

Darío habló sobre la gestión de los SPA, que suelen utilizar el enrutamiento del lado del cliente, lo que dificulta la extracción de datos. Puntos clave incluidos:

  • Evitar confiar en las cargas iniciales: utilizar varias comprobaciones para confirmar que la página está completamente cargada.
  • Comprobar el contexto: asegurarse de estar en el paso correcto de los procesos de varios pasos verificando los títulos u otros elementos estables.
  • Tools: utilizar eficazmente las funciones de navegación y espera de Playwright o Puppeteer.

3. Acceso a datos cargados de forma asincrónica

Diego recomendó usar marcos que gestionen la sincronización automáticamente, como Selenide para Java o WebDriverIO para JavaScript. Estos marcos simplifican la espera de que los elementos se carguen al proporcionar métodos integrados.

Consejos:

  • Predicados basados en eventos: utilizar waitForFunction para esperar estados específicos en el DOM.
  • Intercepción de solicitudes: capturar y trabajar con las respuestas de la API directamente cuando sea posible.

4. Imitar las interacciones de los usuarios para la carga diferida

Greg proporcionó técnicas para hacer frente a la carga diferida, en la que el contenido se carga a medida que interactúas con la página. Las estrategias clave incluyeron:

  • Interacciones con el teclado: utilizar las teclas de paso de página para activar la carga.
  • Capturar datos de forma incremental: guardar los datos en fragmentos para evitar que se pierdan si se produce un error en un script.
  • Evitar las interacciones de los usuarios cuando sea posible: interceptar directamente las respuestas de la API para evitar la necesidad de que los usuarios realicen acciones.

5. Extracción de información de los componentes de Shadow DOM

Darío explicó cómo manejar Shadow DOM, que encapsula partes de la página web y dificulta su extracción. Puntos clave incluidos:

  • Entender Open vs. Shadow DOM cerrado: la mayoría de las herramientas pueden perforar el Shadow DOM abierto, pero no el cerrado.
  • Manejo manual de JavaScript: utilizar la propiedad ShadowRoot para acceder manualmente a los elementos de Shadow DOM.
  • Compatibilidad con marcos: herramientas como Playwright y Puppeteer gestionan Shadow DOM de forma eficaz.

6. Capturar capturas de pantalla de página completa

Diego recomendó usar Firefox para las capturas de pantalla de página completa, ya que tiene un comando nativo para este propósito. La integración de Selenium con el protocolo DevTools de Chrome es otro método eficaz.

Consejos:

  • Red inactiva: asegurarse de que todos los elementos estén cargados antes de realizar capturas de pantalla.
  • Usar métodos integrados: herramientas como la opción fullPage de Puppeteer simplifican el proceso.

7. Operaciones a gran escala

Jacob habló sobre los desafíos de escalar las operaciones de raspado web, como la administración de huellas dactilares, la gestión de sesiones y la rotación de IP. Presentó el navegador de raspado de Bright Data, que abstrae estas complejidades y permite a los desarrolladores centrarse en la creación de scripts.

Características principales:

  • Administración de sesiones: gestionar automáticamente las sesiones para evitar ser detectadas.
  • Rotación de IP: utilizar una variedad de direcciones IP para simular diferentes usuarios.
  • Playground for Testing: prueba tus scripts en un entorno controlado antes de ampliarlos.

Sesión interactiva de preguntas y respuestas

El seminario web concluyó con una sesión de preguntas y respuestas en la que los participantes preguntaron sobre varios aspectos del raspado web. Los temas clave incluyeron:

  • Interceptación de llamadas a la API de frontend: utilizar DevTools del navegador para identificar y replicar las solicitudes de API.
  • Selectores robustos: evitar usar XPath; en su lugar, utilizar selectores más estables y confiables.
  • Gestión de la autenticación: almacenar en caché los tókenes de autenticación y gestionar la autenticación de dos factores manualmente cuando sea necesario.

Conclusión

Este seminario web proporcionó una gran cantidad de conocimientos para los desarrolladores que buscan dominar el raspado web dinámico. Al aprovechar los conocimientos compartidos por Greg, Darío y Diego, puedes mejorar sus técnicas de raspado y hacer que tus scripts sean más sólidos y eficientes. Para aquellos que se perdieron la sesión en vivo, la grabación estará disponible pronto. Permanece atento a más contenidos educativos de Bright Data, que te ayudarán a destacar en el raspado web y la extracción de datos.

¡Feliz raspado!

The Data You Need
Is Only One Click Away.