La propiedad “page_source” de Selenium no refleja los cambios en HTML después de hacer clic.
El título es bastante claro. Hago clic en un botón utilizando Selenium que carga un texto que estoy tratando de extraer y cuando inspecciono el elemento, puedo encontrar lo que estoy buscando. Sin embargo, sin importar cuánto espere, al volcar .pagesource o hacer driver.executescript(“return document.documentElement.outerHTML”) (como se sugiere aquí y aquí), no se reflejan los cambios en el HTML.
davy.ai
Solución: Uso de Esperas Explícitas
Cuando interactuamos con páginas web dinámicas que cargan contenido de forma asíncrona, es importante darle tiempo suficiente a la página para que termine de cargar antes de hacer scraping. Una forma de lograr esto es utilizando esperas explícitas, las cuales instruyen a Selenium a esperar a que ocurra una condición específica antes de continuar con el script.
Aquí tienes un ejemplo de cómo usar una espera explícita para hacer scraping de un texto que se carga al hacer clic en un botón:
En este ejemplo, primero localizamos y hacemos clic en el botón que carga el texto. Luego utilizamos una espera explícita para esperar a la presencia del elemento del contenedor de texto, lo cual indica que el texto ha terminado de cargarse. Finalmente, hacemos scraping del texto desde el elemento utilizando el atributo
text
.Al utilizar esperas explícitas, podemos asegurarnos de que nuestro script haga scraping del HTML únicamente cuando haya terminado de cargar todo el contenido dinámico, incluso si la página tarda mucho tiempo en cargar.