Heim > Artikel > Backend-Entwicklung > Warum erhalte ich beim iterativen Web Scraping auf Amazon eine StaleElementException?
Beim Scraping von Amazon-Suchergebnissen treten während der Paginierung auf nachfolgenden Seiten StaleElementException- und ValueError-Fehler auf. Die Untersuchung des Problems lässt darauf schließen, dass die für die Navigation verantwortlichen Seitenelemente nach dem ersten Laden der Seite veraltet oder nicht mehr verfügbar sind.
Eine Untersuchung des bereitgestellten Codes zeigt, dass das Problem möglicherweise mit der impliziten Wartezeit zusammenhängt. Während der Code eine Wartezeit von 10 Sekunden anzeigt, garantiert dies keine vollständige Pause von 10 Sekunden. Stattdessen ist eine maximale Wartezeit von 10 Sekunden zulässig, die Wartezeit wird jedoch beendet, wenn das Zielelement gefunden wird.
Um dieses Problem zu entschärfen, wird ein expliziterer Ansatz empfohlen, um die Seitenstabilität sicherzustellen, bevor nachfolgende Aktionen ausgeführt werden. Hier ist eine alternative Lösung:
from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait as wait driver.get('https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=sonicare+toothbrush') while True: try: wait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'a > span#pagnNextString'))).click() except TimeoutException: break
Diese Lösung verwendet eine explizite Wartezeit, um sicherzustellen, dass die Schaltfläche „Nächste Seite“ anklickbar wird, bevor versucht wird, zu navigieren. Das Warten dauert maximal 10 Sekunden oder bis die Schaltfläche gefunden wird und zur Interaktion bereit ist. Dieser Ansatz beseitigt das Problem veralteter Elemente und gewährleistet eine zuverlässige Automatisierung.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich beim iterativen Web Scraping auf Amazon eine StaleElementException?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!