Passer au contenu

Comment attendre que la page se charge dans Playwright ?

Lors du scraping de pages Web dynamiques avec Playwright et Python, il est crucial d'attendre que la page soit complètement chargée avant d'essayer d'extraire des données. Voici quelques techniques efficaces pour attendre qu’une page se charge complètement dans Playwright :

Utilisez page.wait_for_load_state()

Le plus simple est d'utiliser le page.wait_for_load_state() API. Cela attend que la page atteigne un état « chargé », ce qui signifie que la page a déclenché son load un événement:

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

Vous pouvez également attendre l'état "networkidle", qui attend qu'il n'y ait plus de connexion réseau pendant au moins 500 ms :

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

Attendez un sélecteur spécifique

Une autre technique courante consiste à attendre qu'un sélecteur spécifique apparaisse sur la page. Cela indique qu'une certaine partie de la page a été chargée :

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

Vous devrez peut-être inspecter la page et trouver un sélecteur qui n'apparaît que lorsque la page est complètement chargée.

Attendez la fin de la navigation

Vous pouvez également attendre que la navigation elle-même termine son chargement avec wait_for_navigation:

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

Cela mettra en pause l'exécution jusqu'à ce que l'événement de navigation se termine après avoir cliqué sur le lien.

Définir un délai d'attente

C'est une bonne idée de définir un délai d'attente lors de l'attente, afin que votre script ne se bloque pas si la condition n'est jamais remplie :

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

Cela attendra jusqu'à 10 secondes avant de générer une erreur si le sélecteur n'apparaît pas.

Attendez entre les interactions

Pour éviter les erreurs de limitation de débit, utilisez sleep() pour ajouter un délai entre les interactions :

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

Cela laisse le temps à l’action précédente de se terminer avant d’entreprendre l’action suivante.

La clé avec Playwright consiste à utiliser les bons événements et sélecteurs pour attendre l'état de la page dont vous avez besoin. Avec les méthodes ci-dessus, vous pouvez attendre de manière fiable qu'une page se charge avant de gratter ou d'interagir avec la page.

Mots clés:

Prendre part à la conversation

Votre adresse email n'apparaitra pas. Les champs obligatoires sont marqués *