Wie vermeide ich StaleElementException beim Scraping von Amazon-Suchergebnissen?

Barbara Streisand
Freigeben: 2024-11-22 00:56:14
Original
966 Leute haben es durchsucht

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage