>  기사  >  백엔드 개발  >  Amazon 검색 결과를 스크랩할 때 StaleElementException을 방지하는 방법은 무엇입니까?

Amazon 검색 결과를 스크랩할 때 StaleElementException을 방지하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-22 00:56:14946검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.