본문 바로가기

만들기/크롤러

파이썬으로 크롤링하기 - WebDriverWait() 사용하기

 

크롤링할 내용이 많아지면, 파싱을 다 하기 전에 코드가 넘어가버리는 경우가 생겼다.

찾고자 하는 element를 받아 온 뒤 진행할 수 있는 해결책을 찾아보니 WebDriverWait가 나왔다.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox("drive 경로")
driver.get("URL 주소")

try:
    # ID가 myDynamicElement인 element가 로딩될 때 까지 10초 대기
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )
except TimeoutException:
	# 실패 시에는 에러메시지로 Time Out 출력
    print('Time Out')
finally:
    driver.quit()

 

By.ID에서 ID 대신 CSS Selector를 사용할 수도 있다. 

클래스명이 .lst_site인 것을 받아올 때 까지 대기하는 코드는 다음과 같다.

try:
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, '.lst_site'))
    )
except TimeoutException:
    print('Time Out')
finally:
    driver.quit()

 

 

참고글

https://selenium-python.readthedocs.io/waits.html