-->

[파이썬] 동적 웹 크롤링 (1) - Selenium webdriver 설치 및 사용

파이썬 Selenium(셀레니움) webdriver를 사용해서 웹크롤링을 수행하기 위해 Selenium 모듈 설치, 사용할 브라우저, 브라우저의 드라이버를 설치해보고 사용방법을 간단히 알아본다. 추가적으로 chromedriver 경로 입력시 발생했던 에러에 대한 해결방법도 제시한다.

 

Selenium 설치

selenium 설치는 아래와 같이 pip로 간단히 할 수 있다.

pip install selenium

 

사용할 브라우저 준비

어떤 브라우저를 사용하던 자유이다. 다만, 크롤링할 때 브라우저를 제어하기 위해 사용할 해당 브라우저의 드라이버를 다운받아야 한다. 난 처음에 드라이버를 사용하는지 모르고 계속 브라우저 자체 exe의 경로를 넘겨주어서 계속 에러가 났었다.

 

각 브라우저 드라이버는 아래 링크에서 다운받을 수 있다. 난 Chrome을 사용할 예정이라 크롬 드라이버를 다운받아서 코드가 있는 경로에 파일을 넣어주었다.

 


Chrome: Chrome 드라이버 다운로드 
FireFox: FireFox 드라이버 다운로드 
Edge: Edge 드라이버 다운로드

 

 

만약, PhantomJS를 사용하려면 PhantomJS 다운을 받아야 할 것이다. 보통 Chrome을 가장 많이 사용하는 것 같긴 하나 터미널 환경에서 동작하는 코드의 경우 PhantomJS 브라우저 사용을 권장한다고 한다. 물론 권장이지 때문에 다른 브라우저를 써도 전혀 상관없다. 아래 링크에서 다운받아 설치할 수 있다.

 


PhantomJS 다운로드 페이지

 

Download PhantomJS

Download PhantomJS New to PhantomJS? Read and study the Quick Start guide. Windows Download phantomjs-2.1.1-windows.zip (17.4 MB) and extract (unzip) the content. The executable phantomjs.exe is ready to use. Note: For this static build, the binary is self

phantomjs.org

 

윈도우의 경우 zip 파일을 받아서 압축을 푼 후 내부의 bin 폴더에 있는 phantomJS.exe 를 PATH 환경변수에 등록해주면 되고 리눅스의 경우 아래와 같이 설치한다.

sudo apt-get install build-essential chrpath libssl-dev libxft-dev libfreetype6-dev libfreetype6 libfontconfig1-dev libfontconfig1 -y
sudo wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
sudo tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/share/
sudo ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/

 

 

webdriver 객체 생성

Selenium을 사용하기 위한 첫번째 단계는 특정 웹 페이지에 접근하기 위해 webriver 객체를 생성해주는 것이다. 참고로 ' webdriver.[browser]([browser_driver_path) ' 에 브라우저 드라이버의 경로 값을 써도되고 안써도되고의 차이를 모르겠어서 구글링하다보니 윈도우 환경에서는 인자로 해당 브라우저 드라이버의 path 값을 입력해주어야 하고 리눅스의 경우 입력 안해줘도 동작한다고 한다. (참조: pythonspot Selenium pantomjs)

 

참고로 위에서도 말했지만, 크롬의 경우 webdriver.Chrome() 에 chrome.exe의 경로를 넣는 것이 아니라 chrome driver의 경로를 넣어야 한다. 안그러면 아래와 같이 'chrome.exe unexpectedly exited'와 같은 에러가 발생하게 된다.

 

 

드라이버 경로도 준비가 됐으면 아래와 같이 코드를 작성한다. 그러면 webdriver 객체를 생성하여 내가 설정한 브라우저에 대한 제어권을 얻을 수 있다.

from selenium import webdriver

URL='https://www.naver.com/'

# webdriver 객체를 생성
driver=webdriver.Chrome(chrome_driver_path)

 

그런데 여기까지 왔을 때, 문제가 발생했다. 드라이버 경로를 알맞게 넣어줬는데도 계속 아래와 같이 'chromedriver executable needs to be in PATH' 에러가 뜨는 것이다.

 

 

구글링 결과대로 수정을 여러가지로 해봤는데 결과는 같았다. 전부 안된다.

# 1)
driver=webdriver.Chrome() #코드가 있는 폴더에 driver 넣어줌

# 2)
driver=webdriver.Chrome(executable_path="C:\[path].chromedriver.exe")

# 3)
driver=webdriver.Chrome(executable_path=os.path.abspath("chromedriver.exe"))

# 4)
driver_path=r"C:\[path].chromedriver.exe"
driver=webdriver.Chrome(driver_path)

 

그러다가 StackOverflow,chromedriver executable needs to be in PATH 아래 답글에서 확인한대로 webdriver-manager를 설치하고 ChromeDriverManager를 임포트시킨 후 ChromeDriverManger().install()을 사용함으로써 해결할 수 있었다. 위대로 하면 난 왜 안됐는지 모르겠다.

 

 

어쨋든 아래 코드대로 코드를 작성하고 정상적으로 코드가 동작한다면 크롬 드라이버가 크롬에 대한 제어권을 얻게 된다.

#-*-coding:utf-8-*-
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
import os

URL='https://www.naver.com'
driver = webdriver.Chrome(ChromeDriverManager().install())

 

코드 실행 시, 'Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다.' 라는 문구와 함께 크롬이 켜지는 것을 볼 수 있다.

 

크롤링할 URL 접근

그리고 아래와 같이 get을 사용해서 크롤링할 URL에 접근할 수 있다.

# driver.maximize_window()
# driver.implicitly_wait(10) 	
driver.get(URL)

 

다음 포스팅에서는 Selenium 사용법, Selenium을 이용한 크롤링 등 포스팅은 아래 관련포스팅을 참고해주기 바란다.

 


관련포스팅

[파이썬] 동적 웹 크롤링 (4) - Selenium을 이용한 비트코인 거래소 크롤링

 

[파이썬] 동적 웹 크롤링 (4) - Selenium을 이용한 비트코인 거래소 크롤링

이전 포스팅에서 알아보았던 Selenium 사용법을 활용해서 비트코인 거래소 중 하나인 고팍스 메인페이지의 암호화폐 테이블 전체를 크롤링해서 엑셀에 저장해보려 한다. 참고로, webdriver를 설치하고 사용하는 방..

liveyourit.tistory.com

파이썬] 동적 웹 크롤링 (3) - Selenium 사용법 (tag, class, xpath 등)

 

[파이썬] 동적 웹 크롤링 (3) - Selenium 사용법 (tag, class, xpath 등)

아래의 이전 포스팅에서 Selenium 및 브라우저 드라이버 설치, webdriver 객체 생성방법까지 알아보았다. webdriver 객체가 브라우저 제어권을 얻고 타겟 URL에 접근까지 했기 때문에 오늘은 그 후 작업으로 크롤..

liveyourit.tistory.com

[파이썬] 동적 웹 크롤링 (2) - Selenium 을 활용해야 하는 이유? 자바스크립트 실행

 

[파이썬] 동적 웹 크롤링 (2) - Selenium 을 활용해야 하는 이유? 자바스크립트 실행

Selenium webdriver를 사용해서 웹크롤링을 수행할 경우 일반 크롤링과 어떻게 다르고, 어떤 경우에 활용되어야 좋은지 확인해본다. 다음 포스팅들에서는 Selenium으로 각 Element에 접근하는 방법 등 실제 사용방..

liveyourit.tistory.com

 

댓글

Designed by JB FACTORY