Heim  >  Artikel  >  Backend-Entwicklung  >  Wie vermeide ich StaleElementException beim Scraping von Amazon-Suchergebnissen?

Wie vermeide ich StaleElementException beim Scraping von Amazon-Suchergebnissen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-22 00:56:14946Durchsuche

How to Avoid StaleElementException When Scraping Amazon Search Results?

StaleElementException in Selenium-Iterationen

Beim Versuch, mit Selenium durch Suchergebnisse auf Amazon zu iterieren, stoßen Benutzer möglicherweise auf eine StaleElementException, wenn sie wiederholt nach unten scrollen neue Seiten laden. Dieser Fehler tritt auf, weil das zum Scrollen verwendete Element „bottom_bar“ nach dem Neuladen der Seite ungültig wird.

Um dieses Problem zu beheben und eine zuverlässigere Paginierung zu ermöglichen, wird empfohlen, einen einfacheren Ansatz zu wählen, der das explizite Scrollen der Seite eliminiert. Stattdessen kann Selenium kontinuierlich auf die Schaltfläche „Weiter“ klicken, bis es deaktiviert wird. Dies vereinfacht den Code und stellt sicher, dass der Treiber konsistent durch die Ergebnisse navigieren kann.

Der aktualisierte Code unten implementiert diesen Ansatz:

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
from selenium.common.exceptions import TimeoutException

driver = webdriver.Chrome()

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

Beachten Sie, dass implicitly_wait(10) nicht auf a wartet volle 10 Sekunden, sondern „wartet bis zu 10 Sekunden, bis ein Element im HTML-DOM erscheint.“ Wenn das Element daher innerhalb einer kürzeren Zeitdauer (z. B. 1 oder 2 Sekunden) gefunden wird, ist der Wartevorgang abgeschlossen.

Das obige ist der detaillierte Inhalt vonWie vermeide ich StaleElementException beim Scraping von Amazon-Suchergebnissen?. 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