ホームページ >バックエンド開発 >Python チュートリアル >Selenium を使用して Amazon 検索結果を効率的に移動し、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 サイトの他の関連記事を参照してください。