Maison > développement back-end > Tutoriel Python > Comment empêcher StaleElementException dans Selenium Web Scraping ?

Comment empêcher StaleElementException dans Selenium Web Scraping ?

Patricia Arquette
Libérer: 2024-11-18 10:20:02
original
625 Les gens l'ont consulté

How to Prevent StaleElementException in Selenium Web Scraping?

StaleElementException lors de l'itération avec Python

Introduction

Lors de l'automatisation des tâches de scraping Web, il est essentiel pour gérer efficacement les interactions entre les pages afin d'éviter les exceptions. Un problème courant qui peut survenir est l'exception StaleElementException, indiquant qu'un élément Web n'est plus valide.

Cause fondamentale et solution

Dans le code donné, l'exception StaleElementException se produit car la page n'est pas complètement chargée avant d'effectuer des opérations sur les éléments. Pour résoudre ce problème, WebDriverWait peut être utilisé. WebDriverWait permet de spécifier des conditions d'attente explicites jusqu'à ce qu'un élément soit disponible.

Code avec WebDriverWait :

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

driver.get('https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=sonicare+toothbrush')

for page in range(1, last_page_number + 1):
    try:
        button = wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//a[@id="pagnNextString"]')))
        button.click()
    except TimeoutException:
        break
Copier après la connexion

Dans ce code mis à jour, un WebDriverWait est utilisé avec un explicite condition d'attendre que le bouton « Suivant » soit cliquable. Cela garantit que la page est complètement chargée et que les éléments sont disponibles avant de continuer.

Notes supplémentaires

  • Évitez d'utiliser implicitly_wait() car cela peut conduire à des résultats inefficaces. en attendant. Utilisez plutôt des attentes explicites si nécessaire.
  • Si vous rencontrez une ValueError après avoir rencontré des StaleElementExceptions, cela est probablement dû au fait que l'élément n'est plus disponible sur la page. Essayez d'ajouter des mécanismes de gestion des erreurs supplémentaires pour résoudre de tels scénarios.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal