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