상세 컨텐츠

본문 제목

SRT 예약하기 프로젝트 - 01

개발 공부 (토이 프로젝트)

by letprogramming 2024. 1. 16. 00:53

본문

반응형

이번에는 아래 python 프로그램을 실행하는 과정이다.

https://kminito.tistory.com/79

 

[Python] 파이썬으로 SRT 예매 프로그램 만들기 (1) 기능 구현하기

안녕하세요? 과거에 처음 코딩을 배우던 시절 짠 허접한 SRT 매진 표 예매 게시물을 올렸었는데요, 이번에 코드를 새로 짜는 김에 파이썬 초보분들에게 도움이 될 수 있도록 어떤 식으로 접근하

kminito.tistory.com

1. selenium, chromedriver 설치

 

위 블로그 글에 나와있듯이, 위 python 프로그램을 실행시키기 위해서는 selenium과 chromedriver가 필요하다.

requirements.txt 파일이 저장되어있어서 아래 명령어를 통해 requirements.txt 파일에 기재되어 있는 패키지를 설치할 수 있다.

 

$ pip install -r requirements.txt

 

그러나 기재되어 있는 selenium 버전은 구버전으로 현재 chromedriver와 같이 사용했을 때 문제가 발생할 수 있다.

해결방법은 selenium과 chrome 버전의 조합에 따라 다른 것으로 보인다.

 

a. Google Chrome 다운그레이드

첫번째 방법은 Google Chrome의 버전을 낮은 버전으로 재설치하는 것이다.

Google Chrome은 업데이트를 수시로 하고 있기 때문에 대부분의 사용자는 최신 버전이 설치되어 있을 것이다.

 

설치되어 있는 Google Chrome을 제거하고, 아래 페이지에서 Google Chrome의 older version을 다운로드 받을 수 있다.

https://google-chrome.en.uptodown.com/windows/versions

 

Older versions of Google Chrome (Windows) | Uptodown

zip 120.0.6099.217 Jan 12, 2024 zip 120.0.6099.199 Jan 5, 2024 zip 120.0.6099.109 Dec 15, 2023 exe 120.0.6099.109 Dec 13, 2023 zip 120.0.6099.71 Dec 8, 2023 exe 119.0.6045.200 Nov 29, 2023 zip 119.0.6045.160 Nov 17, 2023 zip 119.0.6045.124 Nov 10, 2023 zip

google-chrome.en.uptodown.com

이후에 Google Chrome의 자동업데이트를 비활성화하고 해당 chrome 버전에 맞는 chromedriver를 설치하면 된다.

이후에 chromedriver 파일을 프로젝트 경로에 넣고, 경로를 수정해줬다.

 

이렇게 했을 때, 바로 정상 동작하는 경우가 있었고, 아닌 경우가 있었다.

 

b. selenium 최신 버전 설치

위와 같이 진행했을 때, chromedriver를 정상적으로 받아오지 못하면서 except 부분이 실행되는 경우가 있다.

except에서는 chromedriver를 install 하는 코드가 있다.

 

아래 before를 보면 사용자가 지정한 chromedriver_path라는 경로를 담은 변수를 executable_path로 넘겨서 driver 객체를 받아온다.

그러나 최신의 ChromeDriverManager는 before코드에서 except가 발생한다.

또한 chrome 버전이 맞지 않을 경우 install()에서도 에러가 발생할 수 있다.

 

따라서 아래 after 코드로 수정 후에 정상 동작함을 확인했다.

달라진 점은 executable_path 인자가 사라졌고 default 객체를 선언한 것을 알 수 있다.

또한 install() 호출 시 service를 생성하여 service 인자로 넘기는 것을 볼 수 있다.

 

최신의 selenium과 ChromeDriverManager에서는 executable_path가 아닌 Service 객체를 이용하여 driver를 받아와야 한다.

after 코드의 장점은 앞에서 진행했던 chromedriver 파일을 다운로드 받고, Google Chrome 브라우저를 다운그레이드 하지 않아도 된다.

 

ChromeDriverManager가 알아서 현재 사용자 PC의 Chrome 버전에 맞추어 chromedriver를 install 해준다.

 

[before]

try:
	self.driver = webdriver.Chrome(executable_path=chromedriver_path)
except WebDriverException:
	self.driver = webdriver.Chrome(ChromeDriverManager().install())

[after]

from selenium.webdriver.chrome.service import Service

try:
	self.driver = webdriver.Chrome()
except WebDriverException:
	self.driver = webdriver.Chrome(service= Service(ChromeDriverManager().install()))

 

chromedriver 설정이 끝나면 실행에는 큰 문제는 없다.

반응형

'개발 공부 (토이 프로젝트)' 카테고리의 다른 글

SRT 예약하기 프로젝트 - 02  (1) 2024.01.16
SRT 예약하기 프로젝트 - 00  (0) 2024.01.16

관련글 더보기