requests 와 urllib 을 이용하여 크롤링을 하다보면 원하는 정보를 긁어오지 못하는 경우가 종종 있습니다.
이러한 상황이 발생되는 이유는 해당 웹페이지가 자바스크립트로 추가적으로 데이터를 불러들어오는 사이트(동적 웹페이지)일 가능성이 높습니다.
이러한 상황에서 'SELENIUM'이 좋은 해결책이 될 수 있습니다.
물론 셀레니움은 직접 웹 브라우저를 실행시켜 작동하기에 속도가 느린 단점이 있습니다.
이런 단점을 보완하기 위해선 requests와 urllib의 조합을 통해 효율적인 스크레이퍼를 만드시길 추천 드립니다.
1. 셀레니움 설치
터미널 창에서 "pip install selenium'을 입력한후 설치를 해줍니다.
2. 셀레니움 웹드라이브 설정
1
2
|
from selenium import webdriver
|
cs |
해당 패키지를 임포트 해줍니다.
(1) 셀레니움 드라이브 설치
셀레니움에서는 chrome ,firefox, phantomjs, ie 등 여러 가지 브라우저를 지원합니다.
우선 chrome을 기준으로 설명을 하겠습니다.
우선 크롬 드라이버를 설치해줘야 하는데요. 이때 우리가 다운 받을 드라이버는 인터넷을 사용할 때 사용하는 크롬 브라우저가 아니라 셀레니움이 이용할 크롬입니다.
다운 받기 앞서 여러분이 사용하시는 인터넷 크롬의 버전을 확인 합니다.
그 후 해당버전과 일치하는 버전의 크롬 드라이버를 설치해줘야 합니다.
<<제가 사용하는 크롬버젼은 81.0.4044.138입니다 그렇기 때문에 이와 같은 크롬 드라이버를 설치해줘야 겠죠?>>
(2) driver 변수 설정
1
2
3
4
5
6
7
|
from selenium import webdriver
driver = webdriver.Chrome(executable_path ='여러분 pc에 크롬드라이버가 설치된 위치')
# 필자 PC 기준 예시
driver = webdriver.Chrome(executable_path ='C:/python_study/chromedriver/chromedriver.exe')
|
cs |
driver 라는 임의에 변수에 위와 같은 코드를 입력합니다. 이 작업은 우리가 다운 받은 크롬 드라이버와 파이썬이 연결될수 있도록 하는 작업입니다.
아래와 같이 적어도 상관없으니, 여러분이 편한것으로 아무거나 사용하시면 됩니다.
1
2
3
|
from selenium import webdriver
# 필자 PC 기준 예시 driver = webdriver.Chrome('c:/python_study/chromedriver/chromedriver.exe')
|
cs |
(3) 원하는 웹페이지에 접속.
1
2
3
4
5
6
7
8
9
10
|
from selenium import webdriver
driver = webdriver.Chrome('c:/python_study/chromedriver/chromedriver.exe')
driver.get('접속하고자 하는 주소')
# 네이버가 접속하고자 하는 주소라면.
driver.get('www.naver.com')
|
cs |
4. 기타 드라이버(firefox,phantom js 등) 사용법
1) Firefox
(1) 본인 pc에 맞는 버전 다운로드
<다운로드 완료된 파일 모습>
(2) 파이어폭스 드라이버 설정
1
2
3
4
5
6
|
from selenium import webdriver
driver = webdriver.Firefox('여러분 pc에 파이어폭스 드라이버가 설치된 위치')
# 필자 PC 기준 예시
driver = webdriver.Firefox('C:\python_study\firefox\geckodriver.exe')
|
cs |
위와 같이 파이어폭스 드라이버를 설정해주고 나머지는 chrome과 같은 방식으로 진행됩니다.
2) Phantom JS(headless browser)
phantom js는 일명 headless browser로 브라우저를 띄우지 않고 작업을 합니다.
브라우저가 왔다 갔다하는게 싫으신분들은 phantom js가 유용한 툴일 수 있습니다.
최근 팬텀 js는 업데이트를 지원하지 않고 있습니다.
(사용은 가능하나 관련 사항이 찝찝하신분들은 chrome headless 기능을 이용하시면 됩니다. 해당 내용은 아래 링크에서 확인 부탁드립니다.)
[python 기초] selenium add_arguement()를 이용한 headless 및 여러가지 기능 배우기
(1) 본인 pc에 맞는 버전 다운로드
<다운로드 완료된 파일 모습>
(2) 팬텀 JS 드라이버 설정
1
2
3
4
5
6
|
from selenium import webdriver
driver = webdriver.Firefox('여러분 pc에 팬텀 JS 드라이버가 설치된 위치')
# 필자 PC 기준 예시
driver = webdriver.PhantomJS('C:\python_study\phantomjs\phantomjs.exe')
|
cs |
'파이썬 > 파이썬 기초' 카테고리의 다른 글
[파이썬 기초] for loop과 remove를 이용 할때 이상하다면..? (0) | 2021.06.23 |
---|---|
[python 기초] selenium add_arguement()를 이용한 headless 및 여러가지 기능 배우기 (1) | 2020.05.27 |
[파이썬 기초] 셀레니움(selenium) NoSuchElementException , ElementNotVisibleException 에러 해결 방법 (0) | 2020.05.13 |
[파이썬 기초] 엑셀에 이미지 삽입하기 (0) | 2020.04.02 |
[python 기초] PIL 을 활용하여 webp 이미지 확장자 변경하기 (0) | 2020.03.26 |
댓글