首頁  >  文章  >  後端開發  >  為什麼我在 Amazon 上進行迭代網頁抓取時會遇到 StaleElementException?

為什麼我在 Amazon 上進行迭代網頁抓取時會遇到 StaleElementException?

Barbara Streisand
Barbara Streisand原創
2024-11-16 11:33:03161瀏覽

Why Am I Getting StaleElementException During Iterative Web Scraping on Amazon?

使用 Python 進行迭代網頁抓取期間出現 StaleElementException

抓取 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn