ホームページ > バックエンド開発 > Python チュートリアル > Amazon 検索結果をスクレイピングするときに StaleElementException を回避するにはどうすればよいですか?

Amazon 検索結果をスクレイピングするときに StaleElementException を回避するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-22 00:56:14
オリジナル
1049 人が閲覧しました

How to Avoid StaleElementException When Scraping Amazon Search Results?

Selenium の反復での StaleElementException

Selenium を使用して Amazon の検索結果を反復処理しようとすると、ユーザーが繰り返し下にスクロールすると StaleElementException が発生する場合があります。新しいページをロードします。このエラーは、ページのリロード後にスクロールに使用される要素bottom_barが無効になるために発生します。

この問題を解決し、より信頼性の高いページネーションを可能にするには、明示的なページスクロールを排除するより単純なアプローチを採用することをお勧めします。代わりに、Selenium は無効になるまで「次へ」ボタンをクリックし続けることができます。これによりコードが簡素化され、ドライバーが結果内を一貫してナビゲートできるようになります。

以下の更新されたコードは、このアプローチを実装しています。

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(10) は待機しないことに注意してください。完全に 10 秒ですが、「要素が HTML DOM に表示されるまで最大 10 秒待機します」。したがって、それより短い期間 (例: 1 秒または 2 秒) で要素が見つかった場合、待機プロセスは完了します。

以上がAmazon 検索結果をスクレイピングするときに StaleElementException を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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