본문 바로가기

문돌이 존버/각종 꿀팁 및 해결법

AWS EC2 Linux2 서버 셀레니움 설치 feat. 파이썬

반응형

AWS EC2 Ubuntu 서버에 셀레니움을 설치하고 파이썬 자동 스케쥴러를 작동시키려 했지만 결국 실패했습니다. HTTP 연결 오류가 발생하면서 아무리 구글링을 해봤지만 안되서.. Linux2 서버를 시도했고 성공했습니다.

성공의 이유가 Ubuntu와 Linux2 서버의 차이에 기인한 걸지도 모르지만, 혹시 몰라 Linux2 서버에선 가상환경을 생성하고 라이브러리를 설치했습니다.

python3 -m venv myvenv

source myvenv/bin/activate

따라서 오늘은 Linux2 서버에서 셀레니움을 설치하고 작동시킨 방법을 공유하겠습니다. 개발인생님의 블로그를 참고했고 많은 도움이 되었습니다.

sudo yum update -y

wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

sudo yum install ./google-chrome-stable_current_x86_64.rpm -y

sudo ln -s /usr/bin/google-chrome-stable /usr/bin/chromium
# 크롬 버전 확인
google-chrome -version

이렇게 크롬 설치가 완료되었다면 터미널에서 아래 명령어를 통해 테스트 해봅니다.

google-chrome-stable --headless --disable-gpu --print-to-pdf https://moondol-ai.tistory.com/493

실행한 디렉토리에 pdf 파일이 생성되었다면 정상 작동된 것입니다.

다음은 특정 버전의 셀레니움과 웹드라이버 매니저를 설치할 차례입니다.

pip install selenium==4.10.0 # 글 작성 기준 최신 버전 4.12.0
pip install webdriver_manager==4.0.0

셀레니움 동작을 테스트하기 위해 아래 코드를 이용합니다. 참고로 과거에 셀레니움을 사용할 때는 크롬 드라이버를 별도로 설치하고 executable_path 파라미터로 크롬 드라이버 위치를 설정해주었는데요. 이제는 필요없게 되었습니다!! 웹드라이버 매니저에서 크롬 드라이버 매니저를 불러온다면 크롬 버전과 맞는 크롬 드라이버를 자동으로 업데이트 해줍니다.

from selenium import webdriver

from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--headless') # 창 없이 백그라운드로 실행

print(ChromeDriverManager().install())
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)

url = 'https://www.naver.com'
driver.get(url)
driver.quit()

위 코드 실행 시 에러 코드 없이 종료된다면 셀레니움이 잘 작동된 것입니다. 다만, 전 처음 실행할 때 아래와 같은 에러 메시지를 받았는데요.

ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, ~~

이는 urllib3 버전이 OpenSSL 1.1.1+ 버전과 호환되지 않아 발생하는 오류입니다. 이를 해결하기 위해 저는 urllib3 버전을 2.0 아래로 낮췄습니다.

pip install urllib3==1.26.6

참고로 urllib3 2.0.4 버전이 가장 최신 버전으로 2023년 7월 20일에 릴리즈되었습니다. 이 아래 버전이 바로 1.26.6입니다.

참고자료

https://pypi.org/project/urllib3/1.26.7/
https://stackoverflow.com/questions/76187256/importerror-urllib3-v2-0-only-supports-openssl-1-1-1-currently-the-ssl-modu
728x90
반응형