141118 최창원 웹크롤러제작

  • View
    5.787

  • Download
    7

  • Category

    Software

Preview:

Citation preview

0

PythonWeb CrawlerDevelopment

인천대학교 OneScore200901319 최창원

1

INDEX.

발표소개

파이썬소개

크롤러소개

다운로더&스크래퍼

1 2 3 4

다음로그인

5

마무리으리

6

2

발표 소개1

3

파이썬이 뭔대?

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

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

팬텀JS 사용?

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

오늘 할 내용

4

Why Python?

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

문법이 쉽고 직관적이다.

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

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

5

Feature

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

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

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

6

Web Crawler

<모 Naver 카페>

7

Web Crawler

<스포츠 기사>

8

Web Crawler

<뉴스 기사>

9

Web Crawler

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

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

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

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

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

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

10

Search Engine

11

Web Crawler

1) HTTP Requests

(GET, POST)

2) HTTPResponse

(HTML, Javacript, ETC Files)

Web Server

12

HTTP GET (Request)

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

13

HTTP POST (Request)

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

14

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

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

15

HTML + AJAX!!?(Response)

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

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 검색 및 순회(네비게이팅)가 쉬움

17

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

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 예제(네이버 인기 검색어)

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 예제

20

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

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

21

게시판 문서 다운로더ㄱㄱ

22

게시판 문서 다운로더

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

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

• 잉여로울 때

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

23

게시판 문서 다운로더

구현 절차

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

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

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

4. 파일로 저장한다.

24

게시판 문서 다운로더실습

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

25

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

26

The power of browsers

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

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

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

27

Browser

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

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

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

PhantomJS 란 ?

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

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

Selenium 이란 ??

28

Crawler with browser

WebDriver

Phantomjs.exe

ResourcesWeb Server

Browsing

29

네이버 로그인 후 세션취득

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

30

감사합니다.

Recommended