Heim > Artikel > Backend-Entwicklung > Wie verhindert man eine StaleElementException beim Selenium Web Scraping?
StaleElementException beim Iterieren mit Python
Einführung
Bei der Automatisierung von Web-Scraping-Aufgaben ist dies unerlässlich um Seiteninteraktionen effizient zu verarbeiten und Ausnahmen zu vermeiden. Ein häufig auftretendes Problem ist die StaleElementException, die darauf hinweist, dass ein Webelement nicht mehr gültig ist.
Ursache und Lösung
Im angegebenen Code tritt die StaleElementException auf weil die Seite nicht vollständig geladen ist, bevor Vorgänge an den Elementen ausgeführt werden. Um dieses Problem zu beheben, kann WebDriverWait eingesetzt werden. WebDriverWait ermöglicht die Angabe expliziter Wartebedingungen, bis ein Element verfügbar ist.
Code mit 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
In diesem aktualisierten Code wird ein WebDriverWait mit einem expliziten verwendet Bedingung, zu warten, bis die Schaltfläche „Weiter“ anklickbar ist. Dadurch wird sichergestellt, dass die Seite vollständig geladen wurde und die Elemente verfügbar sind, bevor Sie fortfahren.
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWie verhindert man eine StaleElementException beim Selenium Web Scraping?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!