ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python 웹 크롤링을 위한 준비 - 웹 드라이버 지정
    데이터 분석/NumPy 2020. 2. 23. 16:30

    OS: Mac
    Python Version: 3.8
    IDE: PyCharm
    external library: selenium 

    selenium 하위 webdriver.Chrome 에서 크롬 드라이버에 대해 제어하도록 준비한다.
    크롬 드라이버를 별도로 설치한 후, selenium.webdriver 로 웹드라이버를 구동하면 된다.

     크롬 드라이벌 설치 경로 [클릭]

    from selenium import webdriver
    driver = webdriver.Chrome(executable_path= r'/Users/youkyunghwang/PycharmProjects/202002/chromedriver')
    
    --- console log
    selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
    

    책에서 시킨대로 크롬드라이버를 설치한 후, 절대경로로 지정하는데...  두둥. 이런 문구를 만났다.
    사실 꼭 시스템 환경변수 PATH 에 위치시킬 필요는 없지만... 이왕이면 시킨대로 해보기로 결심했다. 그리고 스택오버플로우를 뒤져서 겨우 실행시킨 후, 제대로 이해하기 위해서 삽질기를 정리해보았다.

     

    1. 웹 드라이버 절대경로로 호출 

    executable_path 를 직접 지정해준다. 웹 드라이버가 어느 경로에 위치하던 상관없이, 매 프로젝트에서 불러오면 된다.

    ※ 정규식 문자열 앞에 r을 붙여주면 백슬래시()를 이스케이프 시켜주는 Raw String 이라는 뜻.
    즉 저 안에 운영체제에 따른 / 또는 이 문자열을 이스케이프 시켜서 경로를 있는 그대로 표시해 주는 역할을 한다.

    from selenium import webdriver
    driver = webdriver.Chrome(executable_path= r'/Users/alicia/PycharmProjects/202002/chromedriver')
    

     

     

    2. 웹 드라이버 매니저 인스턴스를 통한 호출

    webdriver_manager.chrome 패키지를 설치한 후, ChromeDriverManager 인스턴스를 통해 설치한 크롬드라이버로 지정한다.
    가장 간단한 방법이지만, 매번 install 을 호출하는게 마음에 걸려서 아래 방법, 정석을 알아보기 시작했다.

    from selenium import webdriver
    from webdriver_manager.chrome import ChromeDriverManager
    driver = webdriver.Chrome(ChromeDriverManager().install())

     

     

    3. chromedriver 시스템 환경변수 PATH 지정, 간단히 호출하기

    PATH 디렉토리 하위에 chromedriver 를 위치시킨다. 최초 설정이 힘들고 이후로는 매번 간편한 기능이다.
    다양한 프로젝트에서 웹 드라이버를 호출해야할 때 권장하는 방법일 듯.

    from selenium import webdriver
    driver = webdriver.Chrome('chromedriver')

     

    a. 시스템 환경변수 PATH 확인 (선택: usr/local/bin), 웹드라이버 파일 mv 실패 (sudo 도 실패)

    echo $PATH
    mv {.../chromdriver} /usr/local/bin
    sudo mv {.../chromedriver} /usr/local/bin



    b. 맥 부팅시, Cmd+R 로 OS X Recovery Mode 진입
    최상단 메뉴 OS X Utilities > Terminal 에서 Configuring System Integrity Protection 비활성화 처리하고 reboot

    csrutil disable
    reboot

     

    c. chrome driver usr/local/bin 으로 이동 성공

    sudo mv {.../chromedriver} /usr/local/bin

     

    d. 해결, 경로 없이 chromedriver 지정

    e. (안전하게 바로) Configuring System Integrity Protection 활성화 처리하고 reboot

    csrutil enable
    reboot

     

     

    댓글

Designed by Tistory.