goodthings4me.tistory.com
직전 글에서 크롬 드라이버를 간단하게 자동 다운로드 설치가 되었는데, 그 코드가 Windows 11에서는 먹히지 않는 듯 하여 다시 구글에서 찾아보고 정리해봅니다.
크롬 브라우저 버전이 업데이트 되면 크롬 드라이버도 그에 맞는 버전을 설치해줘야 하는데, 이때 크롬 드라이버를 자동으로 설치가 되도록 관리해주는 라이브러리(webdriver_manager)가 있고 이것을 import 해줍니다,
Windows 11에서 크롬 드라이버 자동 다운로드 설치
python에서 Chrome WebDriver를 관리해주는 라이브러는 webdriver_manager이며, 이 라이브러리의 설치 명령은 pip install webdriver_manager입니다.
윈도우 11에서 크롬 드라이버 자동 다운로드 설치하는 파이썬 코드는 다음과 같습니다.
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
options = webdriver.ChromeOptions()
options.add_experimental_option('detach', True) # 브라우저 닫힘 방지
driver_install_path = ChromeDriverManager().install()
print('Chrome driver path:', driver_install_path)
service = Service(executable_path = driver_install_path)
# service = Service('C:\\Users\\[사용자 계정]\\.wdm\\drivers\\chromedriver\\win64\\119.0.6045.160\\chromedriver-win32\\chromedriver.exe')
driver = webdriver.Chrome(service=service, options=options)
driver.get('https://www.naver.com')
time.sleep(1)
print("현재 브라우저 URL:", driver.current_url)
print("크롬 브라우저 버전:", driver.capabilities['browserVersion'])
print("크롬 브라우저 제목:", driver.title)
print("윈도우 핸들:", driver.current_window_handle)
nv_links = driver.find_elements(By.CLASS_NAME, 'link_service')
print(len(nv_links)) # 10
for link in nv_links:
print(link.text, link.get_attribute('href'))
- 크롬 드라이버 자동 설치를 위해 webdriver_ manager 라이브러리를 설치하고 ChromeDriverManager를 import 함 (설치 명령 pip install webdriver_ manager)
- 이 라이브러가 설치되면 webdriver_manager와 함께 그에 속한 webdriver_manager.chrome도 설치됨
- 해당 라이브러리를 import 하는 코드는 from webdriver_manager.chrome import ChromeDriverManager
- ChromeDriverManager().install() 명령을 통해 크롬 드라이버를 자동 다운로드하여 특정 경로(path)에 chromedriver.exe 파일을 배치함
- webdriver_ manager 라이브러리로 설치된 경로(path)를 알아보기 위해 출력을 해보니 User 폴더의 사용자 계정명 밑에 있는 .wdm 폴더에 크롬 드라이버 파일이 있었음
C:\Users\[사용자 계정]\.wdm\drivers\chromedriver\win64\119.0.6045.160\chromedriver-win32/chromedriver.exe
[사용자]는 컴퓨터의 현재 "사용자 계정의 이름"으로 대게 C드라이브의 사용자(User) 밑에 있는 이름임
- options는 크롬 드라이버 사용 시 여러가지 옵션을 줄 수 있는데 이때 사용하기 위한 것임
- 가끔 service = Service(executable_path = driver_install_path) 코드가 작동이 안 되는 증상이 있을 수 있고, 이를 대비하여 크롬 드라이버 경로를 직접 지정하는 코드를 삽입해 둠(# service = Service() 부분 주석을 풀어서 사용)
- 그리고 현재 브라우저 URL과 버전, 제목, 윈도우 핸들 등의 값이 궁금하여 이를 출력하는 코드도 있음
▶ 위 코드를 실행한 결과는
Chrome driver path: C:\Users\[사용자 계정]\.wdm\drivers\chromedriver\win64\119.0.6045.160\chromedriver-win32/chromedriver.exe
DevTools listening on ws://127.0.0.1:59684/devtools/browser/0867482d-3e72-4870-9f4a-7f834e3ad4a9
현재 브라우저 URL: https://www.naver.com/
크롬 브라우저 버전: 119.0.6045.160
크롬 브라우저 제목: NAVER
윈도우 핸들: 2B7140BE6ADEA558B28217F35417AEF8
10
메일 https://mail.naver.com/
카페 https://cafe.naver.com/
블로그 https://blog.naver.com/
쇼핑 https://shopping.naver.com/home
뉴스 https://news.naver.com/
증권 https://finance.naver.com/
부동산 https://land.naver.com/
지도 https://map.naver.com/
웹툰 https://comic.naver.com/
바로가기 펼침 https://www.naver.com/#
- DevTools listening on ws://127.0.0.1:59648/devtools/browser/xxx~ 라는 것이 보이는데, Chrome 브라우저의 개발자 도구(DevTools)가 WebSocket 프로토콜을 사용해 로컬 컴퓨터(127.0.0.1)의 특정 브라우저(여기서는 Chrome 브라우저)와의 통신을 대기하고 있다는 것을 의미함
- 그리고, 크롬 창을 디버깅 모드로 크롬창 새로 띄우기도 가능한데, 크롬 브라우저 설치 경로와 함께 지정하면 되었음
'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe ' --remote-debugging-port=9223 --user-data-dir='C:\chrometemp'
- 크롬 브라우저를 새로 띄우고 포트 9223번에 할당해서 로그인 정보나 기타 새로운 크롬 세션 정보들을 저장하여 이후 그 정보를 계속 사용할 수 있게 하는데, 저장하는 폴더는 chrometemp임
여기까지가 Windows 11에서 크롬 드라이브 자동 다운로드 및 설치하는 파이썬 코드이며, 이를 응용하여 selenium 기능을 사용하여 크롤링을 할 수 있습니다.
'코딩 연습 > 파이썬 크롤링' 카테고리의 다른 글
크롬 드라이버 자동 설치, vs code로 selenium 실행해 보기 (0) | 2023.11.22 |
---|---|
[파이썬 크롤링 연습] 가정용 보일러 인증제품 목록 수집 (0) | 2023.11.08 |
서울시 집수리닷컴 시공업체 추출 파이썬 크롤링 연습 (0) | 2023.05.14 |
구분자로 연결된 문자열의 일부분을 추출하는 방법 (0) | 2023.03.25 |
전원주택라이프 웹 사이트 크롤링 테스트 (0) | 2023.03.25 |
댓글