Ir al contenido

¿Cómo esperar a que se cargue la página en Playwright?

Al extraer páginas web dinámicas con Playwright y Python, es fundamental esperar a que la página se cargue por completo antes de intentar extraer datos. A continuación se muestran algunas técnicas efectivas para esperar a que una página se cargue por completo en Playwright:

Utilice page.wait_for_load_state()

La forma más sencilla es utilizar el page.wait_for_load_state() API. Esto espera hasta que la página alcance un estado de "carga", lo que significa que la página ha activado su load evento:

await page.goto("https://example.com")
await page.wait_for_load_state() 

También puedes esperar al estado "red inactiva", que espera hasta que no haya conexiones de red durante al menos 500 ms:

await page.goto("https://example.com")
await page.wait_for_load_state("networkidle")

Espere a un selector específico

Otra técnica común es esperar a que aparezca un selector específico en la página. Esto indica que se ha cargado una determinada parte de la página:

await page.goto("https://example.com")
await page.wait_for_selector("div.loaded")

Es posible que deba inspeccionar la página y encontrar un selector que solo aparezca cuando la página se haya cargado por completo.

Espere a que finalice la navegación.

También puedes esperar a que la navegación termine de cargarse con wait_for_navigation:

await page.click("a.dynamic-page") 
await page.wait_for_navigation()

Esto pausará la ejecución hasta que se complete el evento de navegación después de hacer clic en el enlace.

Establecer un tiempo de espera

Es una buena idea establecer un tiempo de espera durante la espera, para que el script no se cuelgue si nunca se cumple la condición:

await page.wait_for_selector("div.loaded", timeout=10000)

Esto esperará hasta 10 segundos antes de generar un error si el selector no aparece.

Esperar entre interacciones

Para evitar errores de limitación de velocidad, utilice sleep() para agregar un retraso entre interacciones:

await page.click("#submit")
await page.wait_for_navigation()
sleep(5) # wait 5 seconds

Esto da tiempo para que finalice la acción anterior antes de realizar la siguiente acción.

La clave con Playwright es utilizar los eventos y selectores correctos para esperar el estado de la página que necesita. Con los métodos anteriores, puede esperar de manera confiable a que se cargue una página antes de rasparla o interactuar con ella.

Únase a la conversación

Su dirección de correo electrónico no será publicada. Las areas obligatorias están marcadas como requeridas *