2020-09-10

구글 코랩에서 셀레니움 사용하기

0.     셀레니움을 리눅스에서 사용하기

 

은 브라우저와 같은 환경으로 웹 스크래핑(크롤링)을 자동화해주는 소프트웨어이기도 하다. 브라우저와 같은 방식으로 작동해 자바스크립트, AJAX, CSS등을 로드하고 적용하기 때문에 화면에 보이는 요소를 그대로 추출해내기 쉬워서 많은 초보자들이 애용하고 있다.


 

셀레니움은 윈도우 말고도 리눅스와 맥 버전을 지원하고 있다. 그러나 여기에서 사용되는 리눅스 파일은 바이너리 파일이다. 왜인지는 모르겠으나, 해당 바이너리 파일만으로는 실행되지 않고

“WebDriverException: Message: Service chromedriver unexpectedly exited. Status code was: -6”

라는 에러를 일으켰다. 해당 에러를 Stack Overflow에서 “chromium-chromedriver”를 설치해줘야 한다는 것을 알게 됐다. 그래서 친절히도 그가 를 통해 간단하고 빠르게 코드를 구현할 수 있었다.

 

 

1.     코랩에서 테스트

 

모든 과정을 담은 코드는 아래와 같다. 편의를 위해 GitHub 도 함께 첨부하였다.

코랩에 셀레니움을 설치합니다.

!apt-get update

!apt install chromium-chromedriver

!pip install selenium

!cp /usr/lib/chromium-browser/chromedriver /usr/bin

 

셀레니움을 임포트하고크롬 드라이버를 PATH 추가합니다.

from selenium import webdriver

import time

import sys

sys.path.insert(0,'/usr/lib/chromium-browser/chromedriver')

 

# Headless 옵션을  셀레니움 객체를 생성합니다.

chrome_options = webdriver.ChromeOptions()

chrome_options.add_argument('--headless')

chrome_options.add_argument('--no-sandbox')

chrome_options.add_argument('--disable-dev-shm-usage')

driver = webdriver.Chrome('chromedriver',options=chrome_options)

 

구글 검색 예제

driver = webdriver.Chrome('chromedriver',options=chrome_options)

 

try:

    driver.get('https://www.google.com/')

    time.sleep(1)

 

    element = driver.find_element_by_name('q')

    print(element)

    element.send_keys("안녕 구글")

 

    element.submit()

    time.sleep(5)

 

    element = driver.find_element_by_xpath('//*')

    element = element.get_attribute('innerHTML')

    print(element)

 

except Exception as e:

    print(e)

    driver.close()

finally:

    driver.close()

 

 


댓글 없음:

댓글 쓰기