Python으로 반복하는 동안 StaleElementException
소개
웹 스크래핑 작업을 자동화할 때 필수입니다. 예외를 피하기 위해 페이지 상호 작용을 효율적으로 처리합니다. 발생할 수 있는 일반적인 문제 중 하나는 웹 요소가 더 이상 유효하지 않음을 나타내는 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는 명시적인 대기 조건과 함께 사용됩니다. '다음' 버튼을 클릭할 수 있을 때까지 기다리는 조건입니다. 이렇게 하면 계속 진행하기 전에 페이지가 완전히 로드되고 요소를 사용할 수 있습니다.
추가 참고 사항
위 내용은 Selenium 웹 스크래핑에서 StaleElementException을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!