동적 크롤링을 하는 경우 selenium을 사용한다.
실제로 브라우저를 켜서 작동을 하기 때문에 클릭을 하거나 send_keys를 이용해 값들을 보낼 수 있는데
이렇게 사용하기위해서는 특정 브라우저를 사용할 수 있도록 해주는 드라이버가 필요하다.
보통 사용하는 크롬으로 예를 들어보면,
from selenium import webdriver
path = 'C:/Users/sumin/chromedriver.exe' # 크롬드라이버실행파일이 있는 경로
url = 'https://www.naver.com/' # 열고 싶은 링크 주소
driver = webdriver.Chrome(path)
driver.get(url)
자신이 사용할 크롬 드라이버의 버전을 확인하고 -> 그 버전에 맞는 크롬드라이버를 다운받고, 그 크롬 드라이버 파일이 있는 곳을 path값으로 넘겨줘서 실행한다.
하지만 크롬은 워낙 업데이트도 잘되는 편이라 버전이 맞지 않는 것에서 오는 오류도 많고 매번 이렇게 path값을 주는 것도 상당히 귀찮은 일이다.
그래서 그런 사람들을 위한 라이브러리가 있다
바로
chromedriver-autoinstaller
직관적인 라이브러리 이름ㅎㅎ
▼pypi 문서 링크
https://pypi.org/project/chromedriver-autoinstaller/
pip install chromedriver-autoinstaller
설치는 pip를 이용해서 간단하게 할 수 있다.
처음에 나는 이게 path값 대신 사용하는걸로 알았기에
import chromedriver_autoinstaller
path = chromedriver_autoinstaller.install()
driver = webdriver.Chrome(path)
driver.get(url)
이렇게 실행시켜서 path에 지정해서 사용했다.
이렇게 쓰는 방법이 틀린 건 아닌 것 같은데

DeprecationWarning: executable_path has been deprecated, please pass in a Service object
이라는 경고 메세지가 떴다.
실행이 되긴 하니까 오류는 아닌 것 같은데
매우 신경쓰임..!
해결 방법은 두가지가 있는 듯 하다
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager # 설치필요
chromedriver_autoinstaller.install()
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get(url)
이런 식으로 해주거나
url = 'https://www.naver.com/'
chromedriver_autoinstaller.install()
driver = webdriver.Chrome()
driver.get(url)
사실 위에보다 훨씬 간단하다.
path로 넘겨주지 말고 그냥 바로 실행하기
실제로 해 본 결과 오류도 안나고 잘 실행이 된 것을 볼 수 있었다.
셀레니움으로 크롤링 할 때 맨날 path값을 새롭게 설정하느라고 귀찮았는데, 앞으로 autoinstall로 조금 더 간편하게 할 수 있을 듯!