크롬브라우저를 사용해서 Selenium으로 크롤링을 진행할 경우 ChromeDriver가 크롬브라우저와 버전이 맞지 않아 동작을 하지 않는 경우가 있다.
대부분 사용자들은 크롬브라우저의 업데이트 기능을 중지시키지 않기 때문에 나도 모르게 업데이트가 진행되어 있을 수 있다.
이 경우 Selenium으로 크롤링을 진행할 때 Python에서 크롬브라우저 관련 오류가 발생한다.
이를 방지하기 위해서 설치된 크롬브라우저의 버전에 맞게 ChromeDriver를 자동으로 다운로드하거나 업데이트해주는 Webdriver_manager 라이브러리를 소개한다.
Webdriver-manager 사용방법
1. 모듈 설치
pip install webdriver-manager
2. 사용방법
Selenium 3버전과 4버전의 사용방법이 다르다.
Selenium 3
# selenium 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)
driver.get('https://www.google.com')
Selenium 4
# selenium 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get('https://www.google.com')
3. 참고사항
ChromeDriver로 크롤링을 할 때 간혹 ChromeDriver 프로세스가 백그라운드에서 종료가 안되서 오류가 발생하는 경우가 있기 때문에 os 모듈을 통해 강제 종료를 넣어주면 도움이 된다.
import os
import time
try:
os.system("taskkill /f /im chromedriver.exe /t")
print(f"크롬드라이버 강제 종료 성공")
except Exception as e:
print(f"크롬드라이버 강제 종료 실패")
time.sleep(1)
4. 전체코드
본인은 Selenium3를 사용하기에 Selenium3를 기준으로 코드를 작성하였다.
import os
import time
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
try:
os.system("taskkill /f /im chromedriver.exe /t")
print(f"크롬드라이버 강제 종료 성공")
except Exception as e:
print(f"크롬드라이버 강제 종료 실패")
time.sleep(1)
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)
driver.get('https://www.google.com')