티스토리 뷰
[Selenium(셀레늄) 사용하기]
그전에 사용했던 Requests와 BeautifulSoup는 HTML문서를 가져오고 Parsing하는 역할을 했습니다.
Selenium은 조금더 업그레이드 해서 브라우저를 가동시켜 HTML문서를 객체화 시킵니다.
직접 브라우저를 가동시키면 어떤점이 다르냐.
웹페이지를 작동시킨 이 후, 나중에 구동되는 Javascript 이 후의 내용도 볼 수 있습니다.
웹페이지가 최초 동작한 이 후, HTML DOM (구조)이 바뀌는 경우에 필수적이죠.
실제로 해외축구 사이트 (프리미어리그, 라리가)와 같은 순위표를 보여주는 사이트에 들어가서 순위를 클릭해보면
최초로 보여지는 테이블 이 후, 현재 순위에 맞게 순위가 정렬되는 걸 아주 찰나에 확인해 볼 수 있습니다.
이런 경우에는 실제로 페이지를 구동시켜야 정확한 데이터를 얻을 수 있죠.
혹은 로그인이 필요한 경우, 로그인을 한 뒤 바뀌는 HTML DOM에서 데이터를 가져올 때 Selenium이 필요합니다.
설치
pip install selenium
(Mac 이용자는 python3를 이용할 시 pip3로 다운로드)
파이썬 라이브러리로 셀레늄을 설치합니다.
셀레늄에는 다양한 드라이버가 존재합니다.
Chrome이나 FireFox등의 드라이버를 활용해서 브라우징을 할 수 있는데 여기서는 Chrome 드라이버를 설치하겠습니다.
Chrome 드라이버를 사용하기 위해서 설치합니다.
https://sites.google.com/a/chromium.org/chromedriver/
에서 크롬 드라이버를 설치할 수 있습니다.
설치 후에 원하는 폴더에 저장해둡니다. (작업폴더에 넣어두는 것을 추천드립니다.)
그럼 Selenium을 이용해 페이지를 열어보겠습니다.
파이썬 파일을 실행하면 사이트가 열리는 걸 확인할 수 있습니다.
Selenium 메소드에는 이전 BeautifulSoup에서 사용한 메소드 Selector 처럼 태그를 추출하는 메소드가 존재합니다.
## 찾는 css가 1개일 때
driver.find_element_by_css_selector('')
## 찾는 css가 여러개 일 때
driver.find_elements_by_css_selector('')
찾는 css가 여러개 일 때는 반드시 element"s" 를 사용해야 합니다.
그리고 여러개의 elements를 저장하면 배열로 사용할 수 있습니다.
css_selector 뿐만 아니라 다양한 elements를 뽑아올 수 있습니다.
페이지를 넘기는 elements를 가져와서 페이지를 넘겨보겠습니다.
[그림1] 페이지를 넘기는 버튼에 해당하는 XPath를 가져온다. Xpath란 XML 구문에서 경로(Path)를 표현하는 언어이다. (위에서는 다음페이지의 경로를 제시한다.)
버튼에 해당하는 XPath를 받아와서 Click()이라는 메소드를 실행하면 버튼을 클릭한다.
(css_selector로 버튼에 해당하는 element를 Click()해도 상관없음
다른 방법으로, 자바스크립트로 작성되어 있을 경우(onclick="") driver.execute_script로 직접 스크립트를 실행해서 클릭해도 된다.)
첫번째 페이지 버튼 XPath : //*[@id="pageingWrap"]/div/div[1]/a[1]
두번째 페이지 버튼 XPath : //*[@id="pageingWrap"]/div/div[1]/a[2]
세번째 페이지 버튼 XPath : //*[@id="pageingWrap"]/div/div[1]/a[3]
.
.
.
맨 뒤의 숫자만 바꿔주면서 눌러주면 페이지를 하나씩 훑어가면서 브라우징 할 수 있다.
이제 Selenium으로 직접 브라우징 하는 법을 알았으니 BeautifulSoup로 데이터를 수집할 수 있습니다.
사실, BeautifulSoup를 사용하지 않아도 Selenium 의 메소드들로 데이터를 긁어올 수 있습니다.
Selenium은 브라우저에서 HTML을 곧바로 파싱해주기 때문에 BeautifulSoup를 사용하지 않아도 됩니다.
제목에 해당하는 css를 find_element_by_css_selector로 찾으면 됩니다.
## 클래스 name 앞에는 .을 붙여주고 띄어쓰기 부분도 .으로 대체한다
'Data Science > 크롤링 & 텍스트마이닝' 카테고리의 다른 글
[문제해결] Google API 설치시 'Cannot uninstall six' Error (with macOX) (0) | 2019.01.03 |
---|---|
크롤링 시작하기 (0) | 2018.10.30 |
크롤링이란? (1) | 2018.10.30 |
- LR
- softmax
- Express
- BFS
- query string
- Machine Learning
- 백준
- Crawling
- 머신러닝
- 크롤러
- Linear Regression
- Queue
- DFS
- 딥러닝
- 알고리즘
- logistic regression
- Crawler
- 재귀
- 크롤링
- neural network
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |