Heim >Backend-Entwicklung >Python-Tutorial >Warum erhalte ich beim iterativen Web Scraping auf Amazon eine StaleElementException?

Warum erhalte ich beim iterativen Web Scraping auf Amazon eine StaleElementException?

Barbara Streisand
Barbara StreisandOriginal
2024-11-16 11:33:03245Durchsuche

Why Am I Getting StaleElementException During Iterative Web Scraping on Amazon?

StaleElementException beim iterativen Web Scraping mit Python

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn