2022년 2월 6일 일요일

auto download chrome driver file(크롬 드라이버 파일 자동 설치 하기)

기본 지식

selenium에서 브라우저로서 크롬을 사용하기 위해서는 설치된 크롬 브라우저와 동일한 버전의 크롬 드라이버라는 것을 설치해야 합니다.

여기에서는 selenium 설치부터, 크롬 드라이버를 자동으로 설치하는 부분까지 다룹니다.


python에서 selenium 설치법

pip install selenium


크롬 드라이버 설치

selenium에서는 여러 종류의 브라우저를 실행시킬 수 있는데 그중 크롬이 대중적이고 사용하기 편해서 사용하다보면, 크롬 버전과 동일한 chrome driver를 다운로드 받아야합니다. 

해당 하는 버전은 크롬 브라우저창에서 아래 주소를 입력합니다.

chrome://version/

크롬 드라이버는 아래에서 입력합니다.

chromedriver.chromium.org/downloads


기본 예제

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time


driver = webdriver.Chrome()

driver.get("https://www.naver.com")

driver.implicitly_wait(3)


적절한 버전의 크롬 드라이버를 설치하지 않았을때 오류 문구

DevTools listening on ws://127.0.0.1:50815/devtools/browser/18099847-b9a2-4edc-a02e-7aa5b142da4c
Traceback (most recent call last):
  File "selenium_auto_chromedriver.py", line 8, in <module>
    driver = webdriver.Chrome()
  File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 76, in __init__
    RemoteWebDriver.__init__(
  File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 83


크롬브라우저는 자체적으로 업데이트가 되어서 가끔 크롬 드라어버의 버전과 맞지 않는 경우가 있습니다.


크롬 드라이버를 자동으로 업데이트 하는 방법

설치

pip install chromedriver-autoinstaller


사용법

chromedriver_autoinstaller.install() 


예제

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import chromedriver_autoinstaller
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

chromedriver_autoinstaller.install()

driver = webdriver.Chrome()

driver.get("https://www.naver.com")

driver.implicitly_wait(3)


막상 해보면 아래와 같은 오류가 나옵니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Traceback (most recent call last):
  File "selenium_auto_chromedriver.py", line 9, in <module>
    driver = webdriver.Chrome()
  File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 76, in __init__
    RemoteWebDriver.__init__(
  File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Failed to create Chrome process.


이게 발생하는 사유는 chromedriver를 다운로드하는데 시간이 걸려서 그런것 같습니다. 

몇차례 하다보면 정상 작동합니다.

이 부분은 고치려면 처음본 exception일때 

Message: session not created: This version of ChromeDriver only supports Chrome version 위 exception 일때만 크롬드라이버 install을 명령하도록 수정하면 될것입니다.


댓글 없음:

댓글 쓰기