ホームページ >バックエンド開発 >Python チュートリアル >Selenium を使用して Amazon 検索結果を効率的に移動し、StaleElementException を回避するにはどうすればよいですか?

Selenium を使用して Amazon 検索結果を効率的に移動し、StaleElementException を回避するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-29 09:39:11438ブラウズ

How Can I Efficiently Navigate Amazon Search Results with Selenium and Avoid StaleElementException?

Selenium を使用した Amazon の結果のナビゲーション

Selenium を使用して Amazon の検索結果を反復処理するときに発生する可能性のある一般的なエラーは、StaleElementException です。このエラーは、ページの変更または更新により、操作されている要素が DOM にアタッチされなくなったことを示します。

この問題を解決するには、複雑なロジックに依存して特定の要素にスクロールするのではなく、より単純なアプローチを取ることができます。 [次へ] ボタンが使用可能な間、繰り返しクリックすることで、スクリプトはエラーが発生することなく結果ページを移動できます。

この改訂されたコードでは、明示的な待機を利用して、ボタンをクリックする前にボタンがクリック可能であることを確認します。

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

implicitly_wait() メソッドは、明示的な待機メソッドと同様に、完全な待機時間を保証するものではないことに注意することが重要です。代わりに、要素が DOM に表示されるまでドライバーが待機する最大時間を表し、要素が検出されると待機が突然終了します。

以上がSelenium を使用して Amazon 検索結果を効率的に移動し、StaleElementException を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。