반응형
셀레니움, 파이썬, XPATH 요소 존재를 바로 알려주는 함수 만들기
글. 수알치 오상문
# XPATH가 지금 존재하는지 확인하고 True/False를 돌려준다.
def isExistXpath(xpath, implicitly_wait_time=0, old_wait=25):
global driver
driver.implicitly_wait(implicitly_wait_time)
try:
driver.find_element(By.XPATH, xpath)
except Exception:
return False
finally:
driver.implicitly_wait(old_wait)
return True
[예제]
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
implicitly_wait_time = 25
# XPATH가 지금 존재하는지 확인하고 True/False를 돌려준다.
def isExistXpath(xpath, implicitly_wait_time=0, old_wait=25):
global driver
driver.implicitly_wait(implicitly_wait_time)
try:
driver.find_element(By.XPATH, xpath)
except Exception:
return False
finally:
driver.implicitly_wait(old_wait)
return True
print('드라이버 로딩...')
options = Options() # options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-logging"]) # 시스템 usb 오류 금지
options.add_argument("lang=ko_KR")
options.add_argument("user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36")
options.add_experimental_option(
"prefs",
{ "download.default_directory": 'D:\\download', # 다운로드 파일을 저장할 경로
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True
})
# options.add_argument("disable-gpu")
# options.add_argument('--blink-settings=imagesEnabled=false') # 이미지 로딩 금지
# options.add_argument('--mute-audio') # 음소거
# options.add_argument('incognito') # 시크릿 모드 실행
# options.add_argument('headless')
# driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver = webdriver.Chrome(options=options)
# driver.maximize_window()
driver.implicitly_wait(implicitly_wait_time) # 크롬 브라우저 내부 대기 (암묵적 대기)
# 테스트 -----------------------------------------
try:
el = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,
'//*[@id="daumHead"]/div[2]/div/div[1]/ul/li[4]/a/span'))) # 존재하는 XPATH
print('검사 시작')
print(str(isExistXpath('//*[@id="daumHead"]/div[2]/div/div[1]/ul/li[4]/a/span'))) # True
print(str(isExistXpath('//*[@id="Error"]/div[2]/div/div[1]/ul/li[4]/a/span'))) # False: 존재 안하는 XPATH
print(str(isExistXpath('//*[@id="Error"]/div[2]/div/div[1]/ul/li[4]/a/span'))) # False: 존재 안하는 XPATH
print(str(isExistXpath('//*[@id="Error"]/div[2]/div/div[1]/ul/li[4]/a/span'))) # False: 존재 안하는 XPATH
print('검사 종료')
except Exception as e:
print('Error:', e)
finally:
driver.close()
driver.quit()
반응형
'웹 크롤링, 스크래핑' 카테고리의 다른 글
셀레니움 4.10.0 출시! (0) | 2023.06.14 |
---|---|
이루다 vs 챗GPT 무한 말싸움 시키기? (0) | 2023.04.18 |
파이썬, 셀레니움 XPATH로 요소 찾기 여러 예제 (0) | 2022.09.04 |
XPATH 문법 (0) | 2022.09.04 |
셀레니움(파이썬), 에러를 줄이는 스크래핑 (0) | 2022.09.04 |