Meteen naar de inhoud

Hoe kan ik wachten tot de pagina in Playwright is geladen?

Bij het scrapen van dynamische webpagina's met Playwright en Python is het van cruciaal belang om te wachten tot de pagina volledig is geladen voordat u gegevens probeert te extraheren. Hier zijn enkele effectieve technieken om te wachten tot een pagina volledig is geladen in Playwright:

Gebruik page.wait_for_load_state()

De eenvoudigste manier is om de page.wait_for_load_state() API. Dit wacht totdat de pagina de status 'laden' bereikt, wat betekent dat de pagina zijn bericht heeft geactiveerd load evenement:

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

U kunt ook wachten op de status "networkidle", die wacht totdat er gedurende minimaal 500 ms geen netwerkverbindingen zijn:

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

Wacht op een specifieke selector

Een andere veelgebruikte techniek is wachten tot een specifieke selector op de pagina verschijnt. Dit geeft aan dat een bepaald deel van de pagina is geladen:

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

Mogelijk moet u de pagina inspecteren en een selector zoeken die alleen verschijnt als de pagina volledig is geladen.

Wacht tot de navigatie is voltooid

U kunt ook wachten tot de navigatie zelf is geladen wait_for_navigation:

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

Hierdoor wordt de uitvoering gepauzeerd totdat de navigatiegebeurtenis is voltooid nadat op de link is geklikt.

Stel een time-out in

Het is een goed idee om een ​​time-out in te stellen tijdens het wachten, zodat uw script niet blijft hangen als nooit aan de voorwaarde wordt voldaan:

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

Hierdoor wordt er maximaal 10 seconden gewacht voordat er een foutmelding verschijnt als de selector niet verschijnt.

Wacht tussen interacties

Gebruik om snelheidsbeperkende fouten te voorkomen sleep() om een ​​vertraging tussen interacties toe te voegen:

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

Dit geeft tijd om de vorige actie te voltooien voordat de volgende actie wordt ondernomen.

De sleutel bij Playwright is het gebruik van de juiste gebeurtenissen en selectors om te wachten op de paginastatus die u nodig heeft. Met de bovenstaande methoden kunt u op betrouwbare wijze wachten tot een pagina is geladen voordat u de pagina scrapt of ermee communiceert.

Doe mee aan het gesprek

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *