본문 바로가기

만들기/크롤러

파이썬으로 크롤링하기 - selenium

 

selenium은 webdriver라는 API를 통해 브라우저를 제어할 수 있는 모듈이다. 실제 웹 브라우저를 동작시키는 것이기 때문에, 동적인 페이지의 정보도 크롤링 할 수 있게 된다.

 

1. selenium 설치

pip install selenium

 

2. webdriver 설치

해당 게시글은 크롬을 기준으로 작성했습니다. 다른 브라우저를 사용하실 경우엔 해당 브라우저에 맞게 진행하시면 됩니다.

사용하는 크롬의 버전을 확인한다.

 

 

아래 사이트에서 버전에 맞는 드라이버를 받아준다.

https://sites.google.com/a/chromium.org/chromedriver/downloads

 

 

다운로드 받은 파일의 압축을 풀면 웹드라이버 파일을 확인할 수 있다.

해당 파일의 경로는 나중에 selenium 객체를 생성할 때 지정해 주어야 한다.

 

 

3. selenium으로 브라우저 실행

셀레니움으로 구글을 실행하기 위해 필자가 입력한 코드는 다음과 같다.

from selenium import webdriver

driver = webdriver.Chrome(r'C:\Users\smddu\Documents\chromedriver\chromedriver.exe')
driver.implicitly_wait(3)
driver.get('https://google.com')

 

하나씩 살펴보자면

 

#웹드라이버를 다운받아 둔 경로 입력
driver = webdriver.Chrome(r'C:\Users\smddu\Documents\chromedriver')

driver라는 객체로 아까 다운 받은 웹드라이버를 제어한다. 뒤의 경로는 반드시 본인이 웹드라이버를 저장해 둔 경로를 입력해주어야 한다.

 

#모든 자원이 로드될 때 까지 최대 3초 대기
driver.implicitly_wait(3)

기본적으로 웹 자원이 뜰 때까지 기다리지만, 직접 대기 시간을 설정하고 싶다면 implicitly_wait를 사용하면 된다.

 

 

마지막으로, 실행하고 싶은 url을 get을 이용해 입력해주고 파이썬 파일을 실행해주면 해당 사이트가 브라우저로 실행되는 것을 확인할 수 있다.

 


 

 

오류

 

실행하는 도중 몇 개의 에러가 뜰 수 있는데, 대표적인 에러들을 말하자면

 

1. 인코딩

드라이버 경로를 지정해줄 때 인코딩이 제대로 이루어지지 않아 뜨는 오류다.

해결방법으로는 아래 두 방법이 있다.

#경로 앞에 r 입력
driver = webdriver.Chrome(r'C:\Users\smddu\Documents\chromedriver\chromedriver.exe')
# /를 두 번 입력
driver = webdriver.Chrome('C:\\Users\\smddu\\Documents\\chromedriver\\chromedriver.exe')

 

2. 액세스 거부

해당 오류는 경로에 파일명까지 추가해주면 된다. 필자의 경우엔 아래코드로 수정해줬다.

#driver = webdriver.Chrome(r'C:\Users\smddu\Documents\chromedriver')
driver = webdriver.Chrome(r'C:\Users\smddu\Documents\chromedriver\chromedriver.exe')