Selenium
웹 브라우저의 자동화를 가능하게 하는 도구와 라이브러리를 제공하는 프로젝트
Java, Python, C#, Ruby, JavaScript, Kotlin 등의 언어를 지원한다.
리눅스 OS에서 웹 크롤링 환경을 구성하기 위해 웹 브라우저인 크롬과 크롬 드라이버, 그리고 Selenium을 설치하려고 한다.
사용할 OS는 AWS Linux2(CentOS7)이고, Python3이 이미 설치되어 있으므로 Python으로 테스트까지 해보려고 한다.
설치 과정에서는 Sudo 권한이 필요하다.
1. 크롬 설치
공식 Google 저장소를 추가하는 대신 rpm 파일을 다운로드하여서 설치할 것이다. 어차피 설치 과정에서 저장소가 추가되기 때문이다. 아래와 같이 wget 명령으로 최신 크롬 패키지를 다운로드하고, yum localinstall을 이용해 설치를 진행한다.
디스플레이 서버인 Xvfb도 함께 설치한다. (Chrome을 headless로 동작시킨다면 필요하지 않다.)
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
yum localinstall google-chrome-stable_current_x86_64.rpm
# yum install : 패키지 기본 설치 명령
# yum localinstall : rpm 파일 설치 명령
# Xvfb 설치
yum install xorg-x11-server-Xvfb.x86_643
설치할 의존성 패키지가 많다. y를 눌러서 설치를 진행하도록 한다.
설치 확인
완료 후에는 정상적으로 설치되었는지 버전 확인을 해본다.
google-chrome --version
추가된 저장소 확인
설치 과정에서 정말로 Google Chrome 공식 저장소가 추가되었는지 확인해본다.
ll etc/yum.repos.d/
2. 크롬 드라이버 설치
Selenium으로 크롬을 제어하기 위해서는 크롬 드라이버 설치가 필요하다.
크롬 드라이버는 https://sites.google.com/a/chromium.org/chromedriver/ 에서 설치된 크롬 버전에 맞는 버전을 다운로드하여 설치해야 한다.
위에서 확인한 버전인 91.0.4472.114이므로, 91.0.4472.XXX 버전의 드라이버를 설치하면 된다.
Linux인 CentOS에서 설치하고 있으므로 해당 버전의 링크를 복사한다.
wget https://chromedriver.storage.googleapis.com/91.0.4472.101/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
크롬 드라이버는 Binary 파일이라, 파일을 다운로드하여 압축만 해제하면 바로 사용할 수 있다.
드라이버 파일 이동
어떤 사용자든 실행할 수 있는 파일인데 특정 사용자의 홈 디렉터리에 두기 애매하니, /usr/bin/ 아래로 옮겨둔다.
mv chromedriver /usr/bin/chromedriver
3. Selenium 및 기타 라이브러리 설치
pip3 install selenium
pip3 install pyvirtualdisplay # Xvfb, Xephyr and Xvnc 파이썬 라이브러리
pip3 install xlrd
xlrd는 엑셀 조작에 사용하는 라이브러리인데, selenium 사용 시 exception 처리에 사용하는 것 같다.
4. 정상 동작 확인
아래 코드를 실행시켜 정상적으로 동작하는지 확인해본다.
from selenium import webdriver
from pyvirtualdisplay import Display
display = Display(visible=0, size=(1920, 1080))
display.start()
path='/usr/bin/chromedriver' # 구글 드라이버 설치 경로 지정
driver = webdriver.Chrome(path)
driver.get("https://www.naver.com") # naver 열기
print(driver.current_url) # 현재 url 출력
만약 오류가 발생하면…… 열심히 구글링을 하도록 하자…….