Web Scraper in 30 Minutes 강철

Similar documents
PowerPoint 프레젠테이션

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Week13

Secure Programming Lecture1 : Introduction

ibmdw_rest_v1.0.ppt

FileMaker 15 WebDirect 설명서

<4D F736F F F696E74202D E20C0CEC5CDB3DD20C0C0BFEB20B9D720BCADBAF1BDBA20B1E2BCFA E >

초보자를 위한 ASP.NET 2.0

슬라이드 1

요약 1

제 목

Galaxy User Guide KR

e- 11 (Source: IMT strategy 1999 'PERMISSION ' ) The World Best Knowledge Providers Network

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

PowerPoint 프레젠테이션

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

TTA Journal No.157_서체변경.indd

1217 WebTrafMon II

Mstage.PDF

thesis-shk

<C1A4C3A5B8DEB8F05FC1A C8A35FB0F8B0F8B5A5C0CCC5CD20B0B3B9E6B0FA20B0ADBFF8B5B52E687770>

HTML5가 웹 환경에 미치는 영향 고 있어 웹 플랫폼 환경과는 차이가 있다. HTML5는 기존 HTML 기반 웹 브라우저와의 호환성을 유지하면서도, 구조적인 마크업(mark-up) 및 편리한 웹 폼(web form) 기능을 제공하고, 리치웹 애플리케이 션(RIA)을

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

특건확대공청회자료[1].PDF

PDF_Compass_32호-v3.pdf

Multi Channel Analysis. Multi Channel Analytics :!! - (Ad network ) Report! -! -!. Valuepotion Multi Channel Analytics! (1) Install! (2) 3 (4 ~ 6 Page

2파트-07

Interstage4 설치가이드

거창전문대학훈령182.hwp

PowerPoint 프레젠테이션

0. 들어가기 전

160322_ADOP 상품 소개서_1.0


Lab1

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft Word - 김완석.doc


Polly_with_Serverless_HOL_hyouk

<4D F736F F D205B4354BDC9C3FEB8AEC6F7C6AE5D3131C8A35FC5ACB6F3BFECB5E520C4C4C7BBC6C320B1E2BCFA20B5BFC7E2>

SBR-100S User Manual

4? [The Fourth Industrial Revolution] IT :,,,. : (AI), ,, 2, 4 3, : 4 3.

PowerPoint Presentation

Windows 8에서 BioStar 1 설치하기

미쓰리 파워포인트

BEef 사용법.pages

Microsoft SQL Server 2005 포켓 컨설턴트 관리자용

제목을 입력하세요.

Microsoft PowerPoint - ch02_인터넷 이해와 활용.ppt

품질검증분야 Stack 통합 Test 결과보고서 [ The Bug Genie ]

Smart Power Scope Release Informations.pages

Building Mobile AR Web Applications in HTML5 - Google IO 2012

슬라이드 1

Microsoft PowerPoint - Chapter_03-1_DevEnv.pptx

소개 Mac OS X (10.9, 10.10, 10.11, 10.12) 와 OKI 프린터호환성 Mac OS X 를사용하는 PC 에 OKI 프린터및복합기 (MFP) 제품을연결하여사용할때, 최고의성능을발휘할수있도록하는것이 OKI 의목 표입니다. 아래의문서는 OKI 프린터및

Macaron Cooker Manual 1.0.key

초보자를 위한 분산 캐시 활용 전략

What is P2P? Path to Profitability 지식 교환 개념: 지식 포탈 Peer-to-Peer: 등 배간 연결 PC-to-PC, PC-to-Phone, Phone-to-PC People-to-People, Person-to-Person <출전: 박

PowerPoint 프레젠테이션

untitled

조사연구 sampling error of polling sites and the additional error which comes from non-response, early voting and second stage sampling error of voters in

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

KAKAO AI REPORT Vol.01

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

playnode.key

J2EE & Web Services iSeminar

순 서 1. 직종설명 1 2. 경기과제에관한사항 2 3. 사용재료 경기장구성및배치 경기장시설 ᆞ 장비목록 경기진행절차 채점에관한사항 안전관리 공통사항 적용시기 주요개정사항 31 [

Javascript.pages

신림프로그래머_클린코드.key

Analyst Briefing

슬라이드 1

con_using-admin

PowerPoint 프레젠테이션

1

INDEX 들어가기 고민하기 HTML(TABLE/FORM) CSS JS

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

PowerPoint Presentation

Django

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

AMP는 어떻게 빠른 성능을 내나.key

Domino Designer Portal Development tools Rational Application Developer WebSphere Portlet Factory Workplace Designer Workplace Forms Designer

Ⅰ. 서론 1989년 CERN의 팀 버너스 리에 의해 만들어진 월드 와이드 웹 기술은 HTML(HyperText Markup Language), URL(Unified Resource Locator, HTTP(Hyper- Text Transfer Protocol)이라는

슬라이드 1

리포트_03.PDF

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx

歯이시홍).PDF

SRC PLUS 제어기 MANUAL

스마트월드캠퍼스 교육교제

3장

<BFA9C7E0BEF720C1A6B5B5B0B3BCB1B9E6BEC82E687770>

What is ScienceDirect? ScienceDirect는 세계 최대의 온라인 저널 원문 데이터베이스로 엘스비어에서 발행하는 약,00여 종의 Peer-reviewed 저널과,000여권 이상의 도서를 수록하고 있습니다. Peer review Subject 수록된

XE 스킨 제작 가이드

Cache_cny.ppt [읽기 전용]

슬라이드 1

컴퓨터과학과 교육목표 컴퓨터과학과의 컴퓨터과학 프로그램은 해당분야 에서 학문적 기술을 창의적으로 연구하고 산업적 기술을 주도적으로 개발하는 우수한 인력을 양성 함과 동시에 직업적 도덕적 책임의식을 갖는 IT인 육성을 교육목표로 한다. 1. 전공 기본 지식을 체계적으로

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_ pptx

PowerPoint 프레젠테이션

Windows Live Hotmail Custom Domains Korea

09񃬣񃯇2

hd1300_k_v1r2_Final_.PDF

Microsoft Word - CPL-TR OM2M.doc

Transcription:

Web Scraper in 30 Minutes 강철 <kang@cheol.net>

발표자 소개 KAIST 전산학과 2015년부터 G사에서 일합니다. 에서 대한민국 정치의 모든 것을 개발하고 있습니다.

목표 웹 스크래퍼를 프레임웍 없이 처음부터 작성해 본다.

목표 웹 스크래퍼를 프레임웍 없이 처음부터 작성해 본다. 스크래퍼/크롤러의 작동 원리를 이해한다.

목표 웹 스크래퍼를 프레임웍 없이 처음부터 작성해 본다. 스크래퍼/크롤러의 작동 원리를 이해한다. 언제든 필요할 때 동시성 크롤러를 직접 구현

목차 개론 스크래퍼(Scraper), 크롤러(Crawler) 웹(WWW)의 동작 방식 실습 1. 2. 3. 4. Chrome Developer Tools로 웹사이트 구조 파악하기 Requests로 웹페이지 요청하기 scrapy.selector를 이용해 데이터 추출하기 gevent로 여러 페이지 동시에 요청하기

Scraper, Crawler Web crawling: 웹에서 링크를 타고다니며 웹페이지들을 수집하는 행위 예) Google bot이 전 세계의 웹사이트를 수집하여 검색 서비스 제공 Web scraping: 웹사이트에서 정보를 추출하는 행위 예) 쇼핑몰 가격비교 - 각 쇼핑몰 상품 페이지에서 상품 이름, 가격 등을 추출

Scraper, Crawler Google 검색 결과 (structurized)

왜 필요한가 국회 의안정보시스템.

왜 필요한가 1. 의원 이름을 클릭하면 그 의원의 다른 법안들도 볼 수 있음 좋겠는데 2. 이 의원의 출석률은 얼마나 될까? 3. 이 법안을 발의한 의원들의 정당 분포가 어떻게 될까? 전부 새누리당? 아니면 반반? 제공되는 기능 외에 하고 싶은 게 너무 많아!

왜 필요한가 국회, 선거관리위원회 등 국가 정보시스템 데이터를 수집해 만든 대한민국 정치의 모든 것 (http://pokr.kr/)

웹(WWW)의 동작 방식 server client 이미지 출처: wikipedia.

웹(WWW)의 동작 방식 1. Request - url - header - data 이미지 출처: wikipedia.

웹(WWW)의 동작 방식 1. Request - url - header - data 2. HTML, resources - image - css - JavaScript 이미지 출처: wikipedia.

웹(WWW)의 동작 방식 3. 브라우저는 그걸 받아 렌더링 1. Request - url - header - data 2. HTML, resources - image - css - JavaScript 이미지 출처: wikipedia.

실습: TED.com 스크래핑하기

실습: TED.com 스크래핑하기 목표: 최신 비디오 목록을 긁어모아 json으로 저장한다.

1. Chrome Developer Tools로 웹사이트 구조 파악하기 Request URL, method, parameter 등을 확인한다.

2. Requests 이용해 HTML 다운로드 import requests def fetch_page(url): r = requests.get(url) return r.text with open( sample.html, w ) as f: html = fetch_page( http://www.ted.com/talks/browse?page=2 ) f.write(html.encode( utf-8 ))

2. Requests 이용해 HTML 다운로드 sample.html sample.html

3. DOM 구조 파악하기

4. 목록에서 게시물 링크들 추출하기 from urlparse import urljoin from scrapy.selector import Selector # 실행결과 [u'http://www.ted.com/talks/jamila_lyiscott_3_ways_to_speak_english', u'http://www.ted.com/talks/ruth_chang_how_to_make_hard_choices', u'http://www.ted.com/talks/anne_curzan_what_makes_a_word_real', ] def talk_links_from_listpage(url): html = fetch_page(url) sel = Selector(text=html) talk_links = sel.css('.talk-link.media message a::attr(href)').extract() talk_links = [urljoin(url, talk_link) for talk_link in talk_links] return talk_links from pprint import pprint pprint(talk_links_from_listpage( http://www.ted.com/talks/browse?page=2 ))

5. 각 게시물 세부정보 요청하기 import re def latest_talks(page=1): list_url = 'http://www.ted.com/talks/browse?page={0}'.format(page) download_re = re.compile(r'http://download.ted.com/talks/[^"]+') def talk_from_page(url): html = fetch_page(url) talk_links = talk_links_from_listpage(list_url) talks = [talk_from_page(url) for url in talk_links] return talks sel = Selector(text=html) download_m = download_re.search(html) return { 'title': sel.css('.talk-hero title::text').extract(), 'description': sel.css('.talk-description::text').extract(), 'download': download_m.group(0) if download_m else None, } pprint(latest_talks())

6. 동시에 여러 페이지 요청하기 from gevent import monkey; monkey.patch_all() from gevent.pool import Pool def latest_talks(page=1): list_url = 'http://www.ted.com/talks/browse?page={0}'.format(page) talk_links = talk_links_from_listpage(list_url) # talks = [talk_from_page(url) for url in talk_links] pool = Pool(20) # XXX: constant talks = pool.map(talk_from_page, talk_links) return talks pprint(latest_talks()) # 단 5줄 변경만으로: 34초 8초

정리 Python의 쉽고 간결한 문법과 강력한 라이브러리를 이용하면 간단한 스크래퍼 정도는 30분이면 충분히 짜고 남는다.

Q&A

Scrapy 좋아요 command line tools referer & user-agent item pipeline export to file/db crawling: link extraction, queueing, scheduling retry & failover logging daemonize distributed execution

감사합니다