Python で反復中の StaleElementException
はじめに
Web スクレイピング タスクを自動化する場合、これは不可欠ですページの対話を効率的に処理して例外を回避します。発生する可能性のある一般的な問題の 1 つは、Web 要素が有効でなくなったことを示す StaleElementException です。
根本原因と解決策
指定されたコードで、StaleElementException が発生します。要素に対する操作を実行する前にページが完全にロードされていないためです。これに対処するには、WebDriverWait を使用できます。 WebDriverWait を使用すると、要素が使用可能になるまで明示的な待機条件を指定できます。
WebDriverWait を使用したコード:
from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait driver.get('https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=sonicare+toothbrush') for page in range(1, last_page_number + 1): try: button = wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//a[@id="pagnNextString"]'))) button.click() except TimeoutException: break
この更新されたコードでは、WebDriverWait は明示的な待機条件で使用されます。 「次へ」ボタンがクリック可能になるまで待機する条件。これにより、続行する前にページが完全にロードされ、要素が使用可能であることが保証されます。
追加の注意事項
以上がSelenium Web スクレイピングで StaleElementException を防ぐ方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。