Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mit Selenium effizient durch Amazon-Suchergebnisse navigieren und StaleElementException vermeiden?
Navigieren in Amazon-Ergebnissen mit Selenium
Beim Durchsuchen der Suchergebnisse auf Amazon mit Selenium kann ein häufiger Fehler auftreten: StaleElementException. Dieser Fehler weist darauf hin, dass das Element, mit dem interagiert wird, aufgrund von Seitenänderungen oder einer Aktualisierung nicht mehr mit dem DOM verbunden ist.
Um dieses Problem zu lösen, anstatt sich auf komplexe Logik zu verlassen, um zu bestimmten Elementen zu scrollen, a Es kann ein einfacherer Ansatz gewählt werden. Durch iteratives Klicken auf die Schaltfläche „Weiter“, solange diese verfügbar ist, kann das Skript ohne Fehler durch die Ergebnisseiten navigieren.
Dieser überarbeitete Code nutzt explizites Warten, um sicherzustellen, dass die Schaltfläche anklickbar ist, bevor darauf geklickt wird:
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
Es ist wichtig zu beachten, dass die implicitly_wait()-Methode ebenso wie ihr explizit wartendes Gegenstück keine vollständige Wartezeit garantiert. Stattdessen stellt es die maximale Zeit dar, die der Treiber auf das Erscheinen eines Elements im DOM wartet, wobei die Wartezeit abrupt beendet wird, wenn das Element erkannt wird.
Das obige ist der detaillierte Inhalt vonWie kann ich mit Selenium effizient durch Amazon-Suchergebnisse navigieren und StaleElementException vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!