Python - Selenium chrome driver 자동 설치

selenium으로 자동화 프로그램을 만들 때, 현재 설치된 Chrome 등의 브라우저 버전에 맞는 드라이버를 다운로드 받고 그 드라이버를 로딩할 수 있도록 path를 변경해야 합니다. 만약 Chrome을 업데이트하게 되면, 업데이트된 버전에 맞는 Chrome driver를 다시 받아야 합니다. 이런 작업은 매우 귀찮고 번거롭습니다.

다행이 파이썬에는 chromedriver_autoinstaller라는 라이브러리가 있으며, 프로그램이 실행될 때, 현재 PC에 설치된 Chrome 버전에 맞는 chrome driver를 다운로드할 수 있습니다. 그리고 그 driver를 사용하여 selenium 프로그램을 실행할 수 있습니다.

chromedriver_autoinstaller 설치 및 사용 방법에 대해서 간단히 알아보겠습니다.

1. chromedriver_autoinstaller 설치

AutoInstaller는 다음과 같이 pip로 설치할 수 있습니다.

$ pip install chromedriver-autoinstaller

2. 사용 방법

다음 코드는 현재 설치된 Chrome 버전에 맞는 driver를 다운로드 받고, 그 driver로 Google 사이트를 여는 예제입니다.

from selenium import webdriver
import chromedriver_autoinstaller
import os

# Check if chrome driver is installed or not
chrome_ver = chromedriver_autoinstaller.get_chrome_version().split('.')[0]
driver_path = f'./{chrome_ver}/chromedriver.exe'
if os.path.exists(driver_path):
    print(f"chrom driver is insatlled: {driver_path}")
else:
    print(f"install the chrome driver(ver: {chrome_ver})")
    chromedriver_autoinstaller.install(True)

# Get driver and open url
driver = webdriver.Chrome(driver_path)
driver.get("https://google.com")

Output:

> python .\example.py
install the chrome driver(ver: 94)
C:\Users\js\Desktop\test\example.py:16: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
  driver = webdriver.Chrome(driver_path)

3. Deep dive

어려울 것 없는 코드지만, 기능별로 자세히 보면...

아래 코드는 PC에 설치된 크롬 버전을 가져옵니다.

chrome_ver = chromedriver_autoinstaller.get_chrome_version().split('.')[0]

Driver를 다운로드 받으면 현재 working directory의 상대 경로로, ./<chrome version>/chromedriver.exe에 파일이 저장됩니다. 아래와 같이 다운로드 받은 파일이 존재하는지 확인 후, 없는 경우만 다운로드 받도록 합니다.

driver_path = f'./{chrome_ver}/chromedriver.exe'
if os.path.exists(driver_path):
    print(f"chrom driver is insatlled: {driver_path}")

아래 코드가 실행되면 ./<chrome version>/chromedriver.exe 경로에 파일이 생성됩니다.

chromedriver_autoinstaller.install(True)

그 이후에는 다음과 같이 driver를 로딩하여 사용할 수 있습니다.

driver = webdriver.Chrome(driver_path)
driver.get("https://google.com")
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha