Amazon での反復 Web スクレイピング中に StaleElementException が発生するのはなぜですか?

Barbara Streisand
リリース: 2024-11-16 11:33:03
オリジナル
161 人が閲覧しました

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

Python による反復 Web スクレイピング中の 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 での反復 Web スクレイピング中に StaleElementException が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート