ホームページ > バックエンド開発 > Python チュートリアル > Selenium Web スクレイピングで StaleElementException を防ぐ方法は?

Selenium Web スクレイピングで StaleElementException を防ぐ方法は?

Patricia Arquette
リリース: 2024-11-18 10:20:02
オリジナル
625 人が閲覧しました

How to Prevent StaleElementException in Selenium Web Scraping?

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 は明示的な待機条件で使用されます。 「次へ」ボタンがクリック可能になるまで待機する条件。これにより、続行する前にページが完全にロードされ、要素が使用可能であることが保証されます。

追加の注意事項

  • 非効率的になる可能性があるため、implicitly_wait() の使用は避けてください。待っている。代わりに、必要に応じて明示的な待機を使用してください。
  • StaleElementExceptions が発生した後に ValueError が発生した場合は、その要素がページで使用できなくなっていることが原因である可能性があります。このようなシナリオに対処するには、追加のエラー処理メカニズムを追加してみてください。

以上がSelenium Web スクレイピングで StaleElementException を防ぐ方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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