웹크롤링 | 크롬 드라이브 최신 버전 설치하고 원하는 url 열기
부트캠프 시작하기 전에 제공되는 강의를 듣고 있는데, 강의가 2022년에 찍은 거라서 강의를 따라 크롬 드라이브를 설치할 수가 없다. 챗지피티의 도움을 받아서 크롬 드라이브를 설치했는데, 나중에 까먹지 않기 위해 정리해둠!
1. 크롬 버전 확인하기
크롬 - 설정 - Chrome 정보 들어가서 최신 버전인지 확인하기. 강의에서는 107 버전이지만, 현재 2024년 7월 기준으로 126... 옆에 (x86_64)는 어디서 돌아가고 있는지를 나타낸다.
2. 크롬 드라이브 페이지에 들어간다. 다운로드 - 버전 선택에 가면 버전 115 이상은 가용성 대시보드에서 확인할 수 있다고 뜨고 하이퍼링크가 걸려 있다. 여길 클릭! 버전 선택이 너무 번거로우니 이렇게 만들어놓은듯..
3. stable 버전을 보면 126.0.6478.126 이다. 내 버전은 126.0.6478.127(공식 빌드) (x86_64) 이라서 끝번호가 조금 다르긴한데 이거밖에 없으니 이거 하라는거겠지 뭐.. (아직 안나온건지, 왜 127은 없는건지 아시는 분은 알려주시면 감사드리겠습니다ㅠ) stable 칸에서 mac os를 찾아 url을 복사해서 인터넷 주소창에 붙여넣으면 다운로드가 된다!
다운받은 파일은 열면 abou이랑 구글 크롬 포 테스팅이라고 심플하게 딱 두개 들어가 있다. Google Chrome for Testing을 누르면 첨에 개발자를 확인할 수 없기 때문에 열 수 없다고 뜨는데, 이건 맥 시스템 설정 - 개인정보 보호 및 보안 - 보안으로 가면, 최근에 차단된 앱이 뜨는데 이거 실행시킬꺼냐고 묻는다. 이때 실행시키라고 하고 다시 Google Chrome for Testing을 누르면 테스트용 크롬창이 뜬다.
문제(?)는 주피터 노트북에서 크롬드라이브를 킬 때에도 이게 똑같이 떠야하는데(떳으면 좋겠는데..)
from selenium import webdriver
webdriver.Chrome('chromedriver')
실행해봤더니 오류덩어리...
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In[4], line 3 1 from selenium import webdriver ----> 3 webdriver.Chrome('chromedriver') File ~/study/venv/lib/python3.12/site-packages/selenium/webdriver/chrome/webdriver.py:45, in WebDriver.__init__(self, options, service, keep_alive) 42 service = service if service else Service() 43 options = options if options else Options() ---> 45 super().__init__( 46 browser_name=DesiredCapabilities.CHROME["browserName"], 47 vendor_prefix="goog", 48 options=options, 49 service=service, 50 keep_alive=keep_alive, 51 ) File ~/study/venv/lib/python3.12/site-packages/selenium/webdriver/chromium/webdriver.py:50, in ChromiumDriver.__init__(self, browser_name, vendor_prefix, options, service, keep_alive) 47 self.service = service 49 finder = DriverFinder(self.service, options) ---> 50 if finder.get_browser_path(): 51 options.binary_location = finder.get_browser_path() 52 options.browser_version = None File ~/study/venv/lib/python3.12/site-packages/selenium/webdriver/common/driver_finder.py:47, in DriverFinder.get_browser_path(self)
---> 56 browser = self._options.capabilities["browserName"] 57 try: 58 path = self._service.path AttributeError: 'str' object has no attribute 'capabilities'

어떡하라구.. 챗지피티에게 물어보기 찬스를 쓰니 이런 답변이 왔다.
webdriver.Chrome을 올바르게 사용하기 위해서는 webdriver.Chrome 생성자에 Service 객체를 전달하거나, 단순히 드라이버의 경로를 지정해야 합니다. 최근의 Selenium 버전에서는 Service 객체를 사용하는 것이 권장됩니다.
문제 해결 방법
Service 객체 사용: Service 객체를 사용하여 크롬 드라이버의 경로를 지정합니다.
Options 객체 사용 (필요시): 크롬 드라이버에 옵션을 전달할 때 사용합니다.
from selenium import webdriver from selenium.webdriver.chrome.service import Service # 크롬 드라이버 경로 설정 service = Service('/usr/local/bin/chromedriver') # 크롬 드라이버 경로를 지정 # 크롬 드라이버 실행 driver = webdriver.Chrome(service=service) # 웹 페이지 열기 driver.get('https://www.example.com') # 웹 크롤링 작업 수행 print(driver.title) # 크롬 드라이버 종료 driver.quit()
복붙해서 크롬 드라이버를 다운받은 경로만 바꿔줬다.
근데 왜 또 오류가 나는거죠?
오류 메시지에 따르면, 지정한 경로가 유효한 파일 경로가 아니기 때문에 NoSuchDriverException이 발생하고 있어. 크롬 드라이버의 정확한 실행 파일 경로를 지정해야 해.
문제 해결 방법
크롬 드라이버의 정확한 파일 경로 확인: 압축 해제한 크롬 드라이버 파일의 위치를 확인하고, 해당 파일의 경로를 사용해야 해.크롬 드라이버 실행 파일 경로 설정: Service 객체를 생성할 때 크롬 드라이버의 실행 파일 경로를 올바르게 지정해야 해.
단계별 해결 방법
크롬 드라이버 파일 확인: 크롬 드라이버 파일(chromedriver)이 있는 정확한 경로를 확인해.
올바른 경로 설정: Service 객체를 생성할 때 올바른 경로를 사용해.
예제 코드 수정
크롬 드라이버 파일(chromedriver)이 /Users/alookso/study/chrome-mac-x64/chromedriver에 있다고 가정해 보자.
from selenium import webdriver from selenium.webdriver.chrome.service import Service import time # 크롬 드라이버 실행 파일의 경로 service = Service('/Users/alookso/study/chrome-mac-x64/chromedriver') # 크롬 드라이버 실행 driver = webdriver.Chrome(service=service) # 웹 페이지 열기 driver.get("https://www.opinet.co.kr/searRgSelect.do") # 페이지 제목 출력 print(driver.title) # 크롬 드라이버 종료 driver.quit()
추가 설정 방법 (Chromedriver 설치 및 시스템 경로 추가)
크롬 드라이버를 webdriver_manager를 사용하여 자동으로 설치하고 설정할 수도 있어. 이 방법은 더 간단하고 버전 관리를 자동으로 처리해줘. webdriver_manager 설치 : pip install webdriver_manager
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager import time # webdriver_manager를 사용하여 크롬 드라이버 설치 및 경로 설정 service = Service(ChromeDriverManager().install()) # 크롬 드라이버 실행 driver = webdriver.Chrome(service=service) # 웹 페이지 열기 driver.get("https://www.opinet.co.kr/searRgSelect.do") # 페이지 제목 출력 print(driver.title) # 크롬 드라이버 종료 driver.quit()
이렇게 웹드라이버 매너저를 설치하고 get.("url") 을 하자 열린다!!!
이걸 이용한 웹 크롤링은 학습일지에 정리하겠음!