본문 바로가기
웹 크롤링/Jupyter Notebook - 크롤링

Jupyter 웹크롤링 - Selenium / 활용해서 뉴스 크롤링& 로그인

by 빵으니 2020. 6. 8.

Selenium이란?

- Selenium은 주로 웹앱을 테스트하는데 이용하는 프레임워크.

- webdriver라는 API를 통해 운영체제에 설치된 Chrome등의 브라우저를 제어.

 

브라우저를 직접 동작시킨다는 것은 JavaScript를 이용해 비동기적으로 혹은 뒤늦게 불러와지는 컨텐츠들을 가져올 수 있다는 것이다. 즉, ‘눈에 보이는’ 컨텐츠라면 모두 가져올 수 있다는 뜻이다. 우리가 requests에서 사용했던 .text의 경우 브라우저에서 ‘소스보기’를 한 것과 같이 동작하여, JS등을 통해 동적으로 DOM이 변화한 이후의 HTML을 보여주지 않는다. 반면 Selenium은 실제 웹 브라우저가 동작하기 때문에 JS로 렌더링이 완료된 후의 DOM결과물에 접근이 가능하다.


<Jupyter에서 Selenium 사용하기>

selenium

  • 웹페이지 테스트 자동화용 모듈
  • 개발/테스트용 드라이버(웹브라우저)를 사용하여 실제 사용자가 사용하는 것처럼 동작
  • 크롬 드라이버 다운로드
  • PhantomJS 사용자는 크롬 headliess 모드 사용 추천

1. Selenium 모듈 설치

- 방법1) Consol 창으로 설치(관리자 버전)

다 설치하고 나서 conda list 명령어로 설치가 잘 되었는지 확인하기

 

- 방법2) ANACONDA NAVIGATOR 에서 selenium 모듈 설치

사실 이건 실패했다 

2. Chrome WebDriver

- 내 크롬 버전 체크 & 크롬 드라이버 다운로드

 

 

- 다운로드는 여기서!

https://chromedriver.chromium.org/downloads

 

Downloads - ChromeDriver - WebDriver for Chrome

WebDriver for Chrome

chromedriver.chromium.org

 

Chrome Driver 버전 확인하고 다운
다운로드 후 압축풀기는 주피터 작업 폴더 안에 풀어주기

 

3.  jupyter에서 import 

jupyter 작업 폴더 안에 다운로드된 exe 파일이 나타납니다
크롬 드라이브까지 설치 완료하면 jupyter notebook에서 import 가능

 

크롬 드라이버 주소 복사
크롬 드라이버 설치된 경로 입력

4. selenium 예제 해보기

  • python.org 로 이동하여 'class' 자동으로 검색해보기

id값은 이동할 페이지의 소스 참고
새로운 크롬창에 class가 자동 검색된다!


예제) selenium으로 Daum 뉴스 가져오기

이렇게 새 크롬창에 원하는 뉴스 창이 뜹니다


예제) selenium으로 Naver 뉴스 가져오기

- selenium을 활용하여 특정 element의 로딩 대기
- WebDriverWait 객체를 이용하여 해당 element가 로딩 되는 것을 대기
- 실제로 해당 기능을 활용하여 거의 모든 사이트의 크롤링이 가능
- WebDriverWait(driver, 시간(초)).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'CSS_RULE')))

 


예제) selenium으로 Naver 로그인 시키기

  • 보안요소들이 들어 있어 일반적인 방법으로 로그인 불가

본인의 naver 아이디와 비밀번호 입력
보안상의 이유로 로그인이 되지는 않습니다.....

댓글