> 백엔드 개발 > 파이썬 튜토리얼 > Amazon에서 반복적인 웹 스크래핑 중에 StaleElementException이 발생하는 이유는 무엇입니까?

Amazon에서 반복적인 웹 스크래핑 중에 StaleElementException이 발생하는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-16 11:33:03
원래의
241명이 탐색했습니다.

Why Am I Getting StaleElementException During Iterative Web Scraping on Amazon?

Python을 사용한 반복적 웹 스크래핑 중 StaleElementException

Amazon 검색 결과를 스크래핑할 때 후속 페이지의 페이지 매김 중에 StaleElementException 및 ValueError 오류가 발생합니다. 문제를 조사한 결과 초기 페이지 로드 후 탐색을 담당하는 페이지 요소가 오래되거나 사용할 수 없게 되는 것으로 나타났습니다.

제공된 코드를 조사한 결과 이 ​​문제는 암시적 대기와 관련이 있을 수 있는 것으로 보입니다. 코드에는 10초 대기가 표시되어 있지만 이것이 완전한 10초 일시 중지를 보장하지는 않습니다. 대신 최대 10초의 대기 시간을 허용하지만 대상 요소를 찾으면 대기가 종료됩니다.

이 문제를 완화하려면 후속 작업을 실행하기 전에 페이지 안정성을 보장하기 위한 보다 명시적인 접근 방식을 권장합니다. 대체 솔루션은 다음과 같습니다.

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

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
로그인 후 복사

이 솔루션은 탐색을 시도하기 전에 다음 페이지 버튼을 클릭할 수 있도록 명시적인 대기를 사용합니다. 대기는 최대 10초 동안 또는 버튼을 찾아 상호 작용할 준비가 될 때까지 계속됩니다. 이 접근 방식은 오래된 요소 문제를 제거하고 안정적인 자동화를 보장합니다.

위 내용은 Amazon에서 반복적인 웹 스크래핑 중에 StaleElementException이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿