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()
댓글 없음:
댓글 쓰기