
urllib/ requests 의 패키지를 사용하여 beautifulsoup으로 parsing 진행하는 반면, Selenium의 경우, 동적인 웹페이지에 조금 더 focus 되어 있다 ! SessionCreatedException 🤠 ?종종 webdriver의 버전이 맞지 않아서 SessionCreatedException 이 발생하는 경우가 있는데,

이럴 때는 webdriver의 업데이트가 필요하다.
(= 즉, 내가 작성한 code에서 사용되는 Selenium webdriver와 browser 의 버전이 일치해야 한다. Selenium이 아닌 WebDriver을 업그레이드 해야 하는 이유는 단순한데, 그 이유는 스크립트(using WebDriver)와 브라우저에 communication을 담당하는 요소만 업데이트를 하면 되기 때문이다 !
즉, 브라우저의 버전과 일치하는 webdriver을 다운 받으면 된다 !
보통 webdriver은 자신이 사용할 드라이버의 버전을 확인하고, 그 버전에 맞는 드라이버를 다운 및 해당 파일 경로를 path값으로 넘겨줘서 실행된다.
그러나 생각보다 업데이트 주기가 짧지 않다. (사실.. 자주인 것 같다..) 그때마다 하나씩 바꿔도 되지만, 자동으로 install 하는 방법이 없을까 고민을 하다 방법을 찾았다.
1. Manual download
- SessionCreatedException 문제가 발생하면, 필요한 버전을 직접 다운로드 하는 방식
2. autoinstaller or driver manager 설치
- 현재 사용하고 있는 브라우저의 버전을 알고 싶은 경우가 있는데, 이때는 하기와 같이 확인하면 된다. 대부분 앞에 있는 숫자로 큰 버전이 이루어지기에 앞에 숫자만 확인하고 진행하여도 무방하다.
개인적으로 나는 driver manager 이 더 직관적이고 좋은 것 갘다 ㅎㅎ
a. autoinstaller 라이브러리 사용
b. webdriver_manager 라이브러리 사용
- WedDriver을 사용할 때 발생하는 가장 큰 문제점은 installation과 compatiability(호환성)이다. 이유인 즉슨, 각 브라우저의 버전은 특정 webdriver의 버전과 맞아야 하는데, 매번 최신으로 업데이트 해주는 방식이 다소 불편하기에 webdriver manager 이라는 라이브러리가 생겼다. 해당 라이브러리는 자동적으로 사용하고 있는 브라우저에 필요한 web driver를 관리하고 다운로드할 수 있는 편리한 방식을 제공한다 (밑에 코드 참고 )
# 현재 Microsoft Edge 버전 확인하기
from selenium import webdriver
import edgedriver_autoinstaller
ver_check = edgedriver_autoinstaller.get_edge_version()
edge_ver = ver_check.split(".")[0]
# 현재 Chrome 버전 확인하기
from selenium import webdriver
import chromedriver_autoinstaller
ver_check = chromedriver_autoinstaller.get_chrome_version()
chrome_ver = ver_check.split(".")[0]
# (1) 첫번째 대안 : autoinstaller 사용 (1) - 정확한 이유는 모르겠지만 내 환경에서는 제대로 작동이 안된다.
edgedriver_autoinstaller.install(True) # Edge
chromedriver_autoinstall.install(True) # Chrome
# (2) 그래서 찾은 두번째 대안: webdriver manager로 최신 업데이트로 진행 (2)
from selenium import webdriver
from webdriver_manager.microsoft import EdgeChromiumDriverManager
driver = webdriver.Edge(EdgeChromiumDriverManager().install()) # Edge
driver = webdriver.Edge(EdgeChromiumDriverManager().install()) # Chrome