Menavigasi Keputusan Amazon dengan Selenium
Apabila melelaran melalui hasil carian di Amazon menggunakan Selenium, ralat biasa yang boleh timbul ialah StaleElementException. Ralat ini menunjukkan bahawa elemen yang berinteraksi tidak lagi dilampirkan pada DOM, sama ada disebabkan oleh perubahan halaman atau muat semula.
Untuk mengatasi isu ini, dan bukannya bergantung pada logik kompleks untuk menatal ke elemen tertentu, a pendekatan yang lebih mudah boleh diambil. Dengan mengklik berulang-ulang pada butang "Seterusnya" semasa ia tersedia, skrip boleh bergerak melalui halaman hasil tanpa menemui ralat.
Kod yang disemak ini menggunakan penantian eksplisit untuk memastikan butang itu boleh diklik sebelum mengkliknya:
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
Adalah penting untuk ambil perhatian bahawa kaedah implicitly_wait() , seperti rakan sejawat menunggu yang jelas, tidak menjamin masa menunggu penuh. Sebaliknya, ia mewakili masa maksimum pemandu akan menunggu untuk elemen muncul dalam DOM, secara tiba-tiba menamatkan penantian apabila elemen itu dikesan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menavigasi Hasil Carian Amazon dengan Cekap dengan Selenium dan Mengelakkan StaleElementException?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!