tutorial scraping node meaning puppeteer

puppeteer - scraping - Titiritero espera carga de página después de enviar formulario



puppeteer scraping (3)

Presento un formulario con el siguiente código y quiero que Puppeteer espere la carga de la página después de enviar el formulario.

await page.click("button[type=submit]"); //how to wait until the new page loads before taking screenshot? // i don''t want this: // await page.waitFor(1*1000); //← unwanted workaround await page.screenshot({path: ''example.png''});

¿Cómo esperar a que se cargue la página con el titiritero?


De acuerdo con la github.com/GoogleChrome/puppeteer/blob/master/docs/… , debe utilizar:

page.waitForNavigation (opciones)

  • options < Object > Parámetros de navegación que pueden tener las siguientes propiedades:
    • timeout < number > timeout máximo de navegación en milisegundos, predeterminado a 30 segundos, pase 0 para desactivar el tiempo de espera. El valor predeterminado se puede cambiar utilizando el page.setDefaultNavigationTimeout(timeout) .
    • waitUntil < string | Array < string >> Cuando se considera que la navegación se ha realizado correctamente, los valores predeterminados se load . Dada una serie de cadenas de eventos, la navegación se considera exitosa después de que se hayan activado todos los eventos. Los eventos pueden ser:
      • load : considere que la navegación finalice cuando se load evento de load .
      • domcontentloaded : considere que la navegación se DOMContentLoaded cuando se DOMContentLoaded evento DOMContentLoaded .
      • networkidle0 : considere que la navegación finalice cuando no haya más de 0 conexiones de red durante al menos 500 ms.
      • networkidle2 : considere que la navegación esté terminada cuando no haya más de 2 conexiones de red durante al menos 500 ms.
  • devuelve: < Promise <[? Response] >> Promise que se resuelve en la respuesta del recurso principal. En caso de redireccionamientos múltiples, la navegación se resolverá con la respuesta del último redireccionamiento. En el caso de la navegación a un ancla diferente o la navegación debido al uso de la API del historial, la navegación se resolverá con un null .

Legibilidad:

Puede usar github.com/GoogleChrome/puppeteer/blob/master/docs/… para esperar a que una página navegue:

await page.waitForNavigation();

Actuación:

Pero dado que page.waitForNavigation() es un acceso directo para page.mainFrame().waitForNavigation() , podemos usar lo siguiente para una mejora de rendimiento menor:

await page._frameManager._mainFrame.waitForNavigation();


Puede esperar a que la navegación sea asíncrona para evitar que se null redirección,

await Promise.all([ page.click("button[type=submit]"), page.waitForNavigation({ waitUntil: ''networkidle0'' }), ]);

Esto te ayudará si page.click ya activa una navegación.


await page.waitForNavigation();