Jupyter 웹크롤링 - Selenium / 활용해서 뉴스 크롤링& 로그인
Selenium이란?
- Selenium은 주로 웹앱을 테스트하는데 이용하는 프레임워크.
- webdriver라는 API를 통해 운영체제에 설치된 Chrome등의 브라우저를 제어.
브라우저를 직접 동작시킨다는 것은 JavaScript를 이용해 비동기적으로 혹은 뒤늦게 불러와지는 컨텐츠들을 가져올 수 있다는 것이다. 즉, ‘눈에 보이는’ 컨텐츠라면 모두 가져올 수 있다는 뜻이다. 우리가 requests에서 사용했던 .text의 경우 브라우저에서 ‘소스보기’를 한 것과 같이 동작하여, JS등을 통해 동적으로 DOM이 변화한 이후의 HTML을 보여주지 않는다. 반면 Selenium은 실제 웹 브라우저가 동작하기 때문에 JS로 렌더링이 완료된 후의 DOM결과물에 접근이 가능하다.
<Jupyter에서 Selenium 사용하기>
selenium
- 웹페이지 테스트 자동화용 모듈
- 개발/테스트용 드라이버(웹브라우저)를 사용하여 실제 사용자가 사용하는 것처럼 동작
- 크롬 드라이버 다운로드
- PhantomJS 사용자는 크롬 headliess 모드 사용 추천
1. Selenium 모듈 설치
- 방법1) Consol 창으로 설치(관리자 버전)
- 방법2) ANACONDA NAVIGATOR 에서 selenium 모듈 설치
2. Chrome WebDriver
- 내 크롬 버전 체크 & 크롬 드라이버 다운로드
- 다운로드는 여기서!
https://chromedriver.chromium.org/downloads
Downloads - ChromeDriver - WebDriver for Chrome
WebDriver for Chrome
chromedriver.chromium.org
3. jupyter에서 import
4. selenium 예제 해보기
- python.org 로 이동하여 'class' 자동으로 검색해보기
예제) selenium으로 Daum 뉴스 가져오기
예제) selenium으로 Naver 뉴스 가져오기
- selenium을 활용하여 특정 element의 로딩 대기
- WebDriverWait 객체를 이용하여 해당 element가 로딩 되는 것을 대기
- 실제로 해당 기능을 활용하여 거의 모든 사이트의 크롤링이 가능
- WebDriverWait(driver, 시간(초)).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'CSS_RULE')))
예제) selenium으로 Naver 로그인 시키기
- 보안요소들이 들어 있어 일반적인 방법으로 로그인 불가