크롤링할 내용이 많아지면, 파싱을 다 하기 전에 코드가 넘어가버리는 경우가 생겼다.
찾고자 하는 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
'만들기 > 크롤러' 카테고리의 다른 글
교보문고 재고 확인 사이트 만들기 (1) | 2019.08.17 |
---|---|
selenium과 requests 어떤 걸 쓸까 (0) | 2019.07.09 |
파이썬으로 크롤링하기 - 메가박스 서울 지점명 받아오기 (0) | 2019.06.23 |
selenium으로 네이버 자동 로그인하기 (1) | 2019.06.23 |
selenium으로 자동로그인 하기 (0) | 2019.06.23 |