본문 바로가기
프로그래밍 언어/Python

Python) 셀레니움 동적 크롤링 꿀팁

by nomfang 2022. 3. 21.
728x90
반응형

크롤링 고수는 아니지만 수 백 시간 삽질 하면서 얻은 꿀팁 공유 드립니다

크롤링 시 css selector를 사용하자

xpath 등 다른거 다 필요 없습니다 css selector가 가장 잘 가져옵니다

element = driver.find_element_by_css_selector(‘#아이디 .클래스명 > div’) 

마우스 이벤트가 있는 경우

onmouseover 와 같이 마우스 이벤트가 있는 경우
혹은 onclick 팝업인데 다른 곳 클릭 시 창이 닫히는 경우

  1. 개발자 도구 켠다
  2. 해당 마우스 이벤트 발생 시킨 상태에서
  3. 요소 선택 단축키 입력: ctrl + alt + c
  4. 보고싶은 html 요소 클릭

.click() 에서 상호작용이 없다는 에러가 뜰 경우

여기로

분명 코드는 맞는데 selector가 element를 찾지 못할 때

대부분 로딩 속도의 문제입니다
새 창, 새 탭을 켜거나 클릭 등을 하여 새 창이 뜰 경우 충분한 time.sleep()을 주어야 합니다
또한 다른 작업과 병행할 경우 그 작업이 추가됨으로 생기는 딜레이 또한 생각해야 합니다

!pip install time
import time

time.sleep(3) ## 3초 쉰다

또한 창을 백그라운드에서 실행함으로 조금이나마 빨라질 수 있습니다

from selenium import webdriver

# 옵션 생성
options = webdriver.ChromeOptions()
# 창 숨기는 옵션 추가
options.add_argument("headless")

driver = webdriver.Chrome(chrome_driver_dir, options=options)

# driver 종료
driver.quit()

생각나는데로 계속 추가 하겠습니다

반응형

댓글