抓取 Amazon 搜尋結果時,後續頁分頁期間會出現 StaleElementException 和 ValueError 錯誤。檢查該問題表明,負責導航的頁面元素在初始頁面載入後變得陳舊或不可用。
檢查提供的程式碼,問題似乎可能與隱式等待有關。雖然程式碼指示 10 秒等待,但這並不能保證完整的 10 秒暫停。相反,它允許最長等待時間為 10 秒,但等待將在找到目標元素後結束。
為了緩解此問題,建議在執行後續操作之前採用更明確的方法來確保頁面穩定性。這是一個替代解決方案:
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
此解決方案採用明確等待來確保在嘗試導航之前下一頁按鈕變得可單擊。等待最多將持續 10 秒,或直到找到按鈕並準備好進行互動。這種方法消除了陳舊元素的問題並確保可靠的自動化。
以上是為什麼我在 Amazon 上進行迭代網頁抓取時會遇到 StaleElementException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!