Zum Inhalt

Wie kann ich warten, bis die Seite in Playwright geladen ist?

Beim Scraping dynamischer Webseiten mit Playwright und Python ist es wichtig, zu warten, bis die Seite vollständig geladen ist, bevor Sie versuchen, Daten zu extrahieren. Hier sind einige effektive Techniken, um zu warten, bis eine Seite in Playwright vollständig geladen ist:

Verwenden Sie page.wait_for_load_state()

Der einfachste Weg ist die Verwendung von page.wait_for_load_state() API. Dadurch wird gewartet, bis die Seite den Status „Laden“ erreicht, was bedeutet, dass die Seite ihren Status ausgelöst hat load Veranstaltung:

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

Sie können auch auf den Status „networkidle“ warten, der wartet, bis mindestens 500 ms lang keine Netzwerkverbindungen bestehen:

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

Warten Sie auf einen bestimmten Selektor

Eine weitere gängige Technik besteht darin, darauf zu warten, dass ein bestimmter Selektor auf der Seite erscheint. Dies zeigt an, dass ein bestimmter Teil der Seite geladen wurde:

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

Möglicherweise müssen Sie die Seite untersuchen und einen Selektor finden, der nur angezeigt wird, wenn die Seite vollständig geladen ist.

Warten Sie, bis die Navigation abgeschlossen ist

Sie können auch warten, bis die Navigation selbst vollständig geladen ist wait_for_navigation:

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

Dadurch wird die Ausführung angehalten, bis das Navigationsereignis nach dem Klicken auf den Link abgeschlossen ist.

Legen Sie eine Zeitüberschreitung fest

Es empfiehlt sich, beim Warten eine Zeitüberschreitung festzulegen, damit Ihr Skript nicht hängen bleibt, wenn die Bedingung nie erfüllt wird:

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

Dadurch wird bis zu 10 Sekunden gewartet, bevor ein Fehler ausgegeben wird, wenn der Selektor nicht angezeigt wird.

Warten Sie zwischen den Interaktionen

Um ratenbegrenzende Fehler zu vermeiden, verwenden Sie sleep() So fügen Sie eine Verzögerung zwischen Interaktionen hinzu:

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

Dies gibt Zeit, damit die vorherige Aktion abgeschlossen werden kann, bevor die nächste Aktion ausgeführt wird.

Der Schlüssel bei Playwright liegt darin, die richtigen Ereignisse und Selektoren zu verwenden, um auf den von Ihnen benötigten Seitenstatus zu warten. Mit den oben genannten Methoden können Sie zuverlässig warten, bis eine Seite geladen ist, bevor Sie die Seite scrapen oder mit ihr interagieren.

Stichworte:

Mitreden

E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind MIT * gekennzeichnet. *