141118 최창원 웹크롤러제작

31
0 Python Web Crawler Development 인천대학교 OneScore 200901319 최창원

Upload: changwon-choe

Post on 16-Jul-2015

5.786 views

Category:

Software


7 download

TRANSCRIPT

Page 1: 141118 최창원 웹크롤러제작

0

PythonWeb CrawlerDevelopment

인천대학교 OneScore200901319 최창원

Page 2: 141118 최창원 웹크롤러제작

1

INDEX.

발표소개

파이썬소개

크롤러소개

다운로더&스크래퍼

1 2 3 4

다음로그인

5

마무리으리

6

Page 3: 141118 최창원 웹크롤러제작

2

발표 소개1

Page 4: 141118 최창원 웹크롤러제작

3

파이썬이 뭔대?

거대하고 자동화된 크롤러를 제작하는 방법은 아닌

웹 크롤러를 만드는데 필요한 기초지식 전달

팬텀JS 사용?

소스코드 설명, 실습위주의 진행

오늘 할 내용

Page 5: 141118 최창원 웹크롤러제작

4

Why Python?

1991년귀도 반 로섬에 의해 탄생

문법이 쉽고 직관적이다.

built-in 라이브러리가 많아할 수 있는게 매우 많다.

크로스 플랫폼을 지원한다.

Page 6: 141118 최창원 웹크롤러제작

5

Feature

인터프리터위에서 실행된다.

C와 Java와다른동적 타이핑을 사용한다.

강력한 리플렉션이 가능하다.

Page 7: 141118 최창원 웹크롤러제작

6

Web Crawler

<모 Naver 카페>

Page 8: 141118 최창원 웹크롤러제작

7

Web Crawler

<스포츠 기사>

Page 9: 141118 최창원 웹크롤러제작

8

Web Crawler

<뉴스 기사>

Page 10: 141118 최창원 웹크롤러제작

9

Web Crawler

World Wide Web을 통해 주고 받는 정보를 수집하는자동화소프트웨어

주로 다음과 같은 곳에사용할 수 있습니다.

• 기계학습 소프트웨어 개발 시 데이터를 수집할 경우

• 검색엔진을 위해 문서를 수집 할 경우

• 프로젝트에 필요한 컨텐츠를 수집할 때

• 개인적으로 필요한 정보를 주기적으로 수신 받고 싶을 때

Page 11: 141118 최창원 웹크롤러제작

10

Search Engine

Page 12: 141118 최창원 웹크롤러제작

11

Web Crawler

1) HTTP Requests

(GET, POST)

2) HTTPResponse

(HTML, Javacript, ETC Files)

Web Server

Page 13: 141118 최창원 웹크롤러제작

12

HTTP GET (Request)

<hi-bogo.net 메인 페이지 접속 했을 때>

Page 14: 141118 최창원 웹크롤러제작

13

HTTP POST (Request)

<hi-bogo.net 로그인 할 때>

Page 15: 141118 최창원 웹크롤러제작

14

HTML (Response)<HTML - 계층구조>

<http://news.naver.com/main/search/search.nhn?query=%B1%B8%B1%DB&x=0&y=0>

Page 16: 141118 최창원 웹크롤러제작

15

HTML + AJAX!!?(Response)

https://play.google.com/store/apps/details?id=com.kakao.talk&hl=ko

Page 17: 141118 최창원 웹크롤러제작

16

Python Modules

참고http://pythonhackers.com/open-source/http://www.crummy.com/software/BeautifulSoup/bs4/doc/http://docs.python-requests.org/en/latest/

Requests• 간편하고 쉬운 메서드• HTTP 프로토콜조작이 쉬움• SSL 걱정 ㄴㄴ

BeatifulSoup4• HTML 파싱 트리생성• HTML 검색 및 순회(네비게이팅)가 쉬움

Page 18: 141118 최창원 웹크롤러제작

17

네이버 인기 검색어 크롤링ㄱㄱ

Page 19: 141118 최창원 웹크롤러제작

18

#-*- encoding: utf-8 -*-#실시간검색어import requests as rsimport bs4

def getTopRank():

naver_url = 'http://www.naver.com'#1)요청response = rs.get(naver_url)

#2)응답으로부터 HTML 추출html_content = response.text.encode(response.encoding);

............

Requests 예제(네이버 인기 검색어)

Page 20: 141118 최창원 웹크롤러제작

19

............

#2)응답으로부터 HTML 추출html_content = response.text.encode(response.encoding);

#3)HTML 파싱navigator = bs4.BeautifulSoup(html_content)

#4)네비게이터를이용해원하는태그리스트가져오기realRankTag = navigator.find_all(id='realrank')resultList = realRankTag[0].find_all('a')

#5)키워드추출keywords = [item['title'] for item in resultList]

#6)키워드출력for index, keyword in enumerate(keywords):

resultText = '[%d위] %s'%(index,keyword.encode('utf-8'))print resultText.decode('utf-8').encode('euc-kr')

BeautifulSoup 예제

Page 21: 141118 최창원 웹크롤러제작

20

네이버 인기 검색어크롤링 실습

https://github.com/qwefgh90/Web_CrawlernaverTopRank.py

Page 22: 141118 최창원 웹크롤러제작

21

게시판 문서 다운로더ㄱㄱ

Page 23: 141118 최창원 웹크롤러제작

22

게시판 문서 다운로더

• 다운받을 파일이 너무 많아 일일히 클릭하기 지치고 힘들 때 !

• 배운거 활용해보고 싶을 때

• 잉여로울 때

사실 그다지 쓸모는 없습니다...

Page 24: 141118 최창원 웹크롤러제작

23

게시판 문서 다운로더

구현 절차

1. 파일 다운로드를 요청하는 부분을 분석

2. 똑같은 헤더와 페이로드를 만들어서 똑같은 요청을 다시 보내본다.

3. 요청한 파일이 응답에 제대로 담겨있는지? HTTP 응답코드가 200인지 확인?

4. 파일로 저장한다.

Page 25: 141118 최창원 웹크롤러제작

24

게시판 문서 다운로더실습

https://github.com/qwefgh90/Web_Crawlerdelphi_downloader.py

Page 26: 141118 최창원 웹크롤러제작

25

그러나 항상 이처럼쉬운 것은 아닙니다...!

Page 27: 141118 최창원 웹크롤러제작

26

The power of browsers

• 자바스크립트에 크롤링 할 내용이 숨겨져 있다면? (멜론 크롤링)

• 분석해봤지만 스크립트가 단순하지 않을 때? (네이버 로그인)

• 브라우저에서 매크로 돌리듯이 사용하고 싶을 때!!

Page 28: 141118 최창원 웹크롤러제작

27

Browser

실제 브라우저를 사용해서 크롤링 해보자.

이때 Headless Browser인 PhantomJS는매우 유용하다.

파이썬에서 PhantomJS를 다루기 위해선 Selenium 모듈이 필요하다.

PhantomJS 란 ?

웹 표준을 따르는 headless Webkit 이다. 자바스크립트를 사용할 수 있으며 DOM, CSS, JSON, SVG등을 컨트롤 할 수 있다.

브라우저와 드라이버로 연결되어 브라우저에서 하는 작업들을 자동화 시킬 수 있다. selenium은 웹 인터페이스로 동작하며 많은 브라우저가 selenium과 호환이 되고PhantomJS와도 호환이 된다.

Selenium 이란 ??

Page 29: 141118 최창원 웹크롤러제작

28

Crawler with browser

WebDriver

Phantomjs.exe

ResourcesWeb Server

Browsing

Page 30: 141118 최창원 웹크롤러제작

29

네이버 로그인 후 세션취득

https://github.com/qwefgh90/SeleniumSamplecrawler.py

Page 31: 141118 최창원 웹크롤러제작

30

감사합니다.