Google VM(CentOS)에 Anaconda환경에서 Selenium설치

2022. 6. 12. 16:23카테고리 없음

728x90

사전 준비

  • google VM
  • centOS
  • chrome
  • anaconda
  • selenium
  • web-driver

centOS기반으로 selenium을 이용해 크롤링을 하는 프로그램을 만든 적이 있다.

관련 내용 : https://extmovie.com/movietalk/70572654

 

익스트림무비 - 메가박스 이벤트&빵원티켓 알리미를 만들었습니다.

 

extmovie.com

아마존 AWS에서 서버리스 환경으로 구현해 보고 싶어서 람다를 이용해 만들었었다.

근데 아마존 서버리스 환경은 무제한 공짜는 아니다.

Lambda, dynamoDB, S3를 사용해서 만들었는데 각 리소스가 지원하는 무료 기준에서 벗어나는 순간 서비스 종료를 해야 할지 모른다..

그래서 미래를 대비해 새로운 서비스들중 무료 지원을 해주는 클라우드 업체들을 알아보니 구글 클라우드가 VM 1대를 평생 무료(VM 무료 사양을 할 경우)로 사용할 수 있게 지원해주고 있길래 크롤링 하기 위한 환경 세팅을 해봤다.


chrome 브라우저로 크롤링을 할거기 때문에 centOS에 크롬을 설치해야 한다.

vi /etc/yum.repos.d/google-chrome.repo

위 명령어를 실행 한다음

[google-chrome] 
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=0
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

위 내용을 입력한다

크롬 설치하기 위한 환경 세팅인 거 같은데 무슨 내용인지 모르겠다..

저장 후 shell 환경에서 

yum install google-chrome-stable

위 명령어로 크롬을 다운로드한다.

다운 및 설치가 끝난 후

google-chrome --version

위 명령어로 제대로 버전이 나온다면 설치가 재대로 된 거다.

나는 web-driver를 사용할 거기 때문에 크롬 버전에 대해 신경 안 썼지만 AWS람다 같은 환경에서는 다운로드가 안되기 때문에 크롬 드라이버를 바이너리로 빌드해서 가치 압축해서 올려야 된다.

즉, 위 방법으로 AWS람다에 올릴 수 없다는 것!


가상 환경에서 패키지 관리를 하기 위해 anaconda를 설치하고 가상환경 이름은 movie로 만들었다.

movie 가상 환경을 활성화 한 다음

conda install -c conda-forge selenium

위 명령어를 입력해서 selenium을 설치 후 web-driver를 설치하기 위해

pip install webdriver-manager

위 명령어를 입력한다.

참고로 web-driver는 크롤링을 하기 위한 driver 패키지다

이 패키지를 쓰면 centOS에서 크롬이 자동 업데이트될 경우 web-driver패키지에서 최신 driver를 다운로드 및 세팅해주기 때문에 version에 맞는 driver를 신경 쓸 필요가 없다!

물론 AWS람다에서는 사용할 수 없는 기술이다.

이유는 위에 써놓았듯이 람다 구조상 지원을 안 한다.. 억지로 람다에서 임시 폴더에 다운로드하여 사용하는 방법이 있는 걸로 아는데 추천하지 않는다.

그리고 conda로 web-driver를 설치하지 않은 이유는 conda에서 web-driver지원 버전이 제대로 관리 안되는 거 같아 pip로 다운로드하였다.

conda list

위 명령어를 입력하면

위와 같이 selenium과 webdriver-manager가 있다면 끝이다.


간단한 크롤링 코드를 만든 후 기능이 작동하는지 테스트한다.

from selenium.webdriver.chrome.options import Options
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

def start_drive():
	chrome_options = Options()
	chrome_options.add_argument('--headless')
	chrome_options.add_argument('--no-sandbox')
	chrome_options.add_argument('--disable-gpu')
	chrome_options.add_argument('--window-size=1280x1696')
	chrome_options.add_argument('--user-data-dir=/tmp/user-data')
	chrome_options.add_argument('--hide-scrollbars')
	chrome_options.add_argument('--enable-logging')
	chrome_options.add_argument('--log-level=0')
	chrome_options.add_argument('--v=99')
	chrome_options.add_argument('--single-process')
	chrome_options.add_argument('--data-path=/tmp/data-path')
	chrome_options.add_argument('--ignore-certificate-errors')
	chrome_options.add_argument('--homedir=/tmp')
	chrome_options.add_argument('--disk-cache-dir=/tmp/cache-dir')
	chrome_options.add_argument('user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36')
	#chrome_options.binary_location = "/opt/python/bin/headless-chromium"

	driver = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)
	return driver

driver = start_drive()
driver.get("http://www.python.org")
assert "Python" in driver.title

print(driver.current_url)
driver.quit()

google cloud computer(VM) centOS에 anaconda 가상 환경에서 chrome 브라우저를 통해 selenium으로 크롤링하는 환경 구성 및 프로그래밍 실행하는데 이틀이 걸렸다.

그전에 AWS Lamdba 환경에서 설정하던 거랑 방법이 많이 달랐던 게 컸다.

나중에는 anaconda도 사용하지 않고 docker로 만들면 좋겠지만 anaconda 공부도 할 겸 anaconda베이스로 세팅해봤다.