coding

Selenium을 이용한 자동 크롤링

codlingual 2021. 9. 10. 22:38
반응형

우선 여기서 ChromeDriver를 설치한다. 각자 크롬 버전에 따라 맞는 걸 선택해야 하는데, 크롬 설정 > Chrome 정보에 들어가서 각자 크롬 버전을 확인할 수 있다.

https://chromedriver.chromium.org/downloads

 

ChromeDriver - WebDriver for Chrome - Downloads

Current Releases If you are using Chrome version 94, please download ChromeDriver 94.0.4606.41 If you are using Chrome version 93, please download ChromeDriver 93.0.4577.63 If you are using Chrome version 92, please download ChromeDriver 92.0.4515.107 For

chromedriver.chromium.org

 

기본 코드는 다음과 같다.

 

from selenium import webdriver

# 드라이버 불러오기 
# 각자 chromedriver.exe를 다운받은 path
driver = webdriver.Chrome('chromedriver.exe')

# 크롤링 원하는 url 
url = "https://..."
driver.get(url)

# css로 element 찾기 
elems = driver.find_elements_by_css_selector(css)
# 찾은 element의 href 추출 
urls += [elem.get_attribute('href') for elem in elems]
    
# xpath로 element 찾기 
# 클릭 가능한 element는 클릭도 가능!
driver.find_element_by_xpath(xpath).click()

 

xpath는 원하는 element 우클릭 > 검사 > 파랗게 하이라이트된 부분 우클릭 > Copy > Copy Xpath 누르면 알 수 있다. 

 

클릭도 가능해서 계속 Next 버튼을 누르면서 크롤링하게 시킬 수도 있다.

간혹 ElementClickInterceptedException가 발생하기도 하는데, 버튼 클릭할 위치에 팝업창 같은게 떠서 그렇다.

그러면 팝업창의 닫기 버튼의 xpath를 또 확인해서, 그 닫기 버튼의 xpath가 현재 있는 경우, 그걸 눌러주는 식으로 코드를 짜주면 된다.

 

    try:
        driver.find_element_by_xpath(xpath).click()
    except NoSuchElementException:
        print("Keep Going~")

 

 

반응형