PowerPoint 프레젠테이션

Similar documents
Web Scraper in 30 Minutes 강철

Microsoft PowerPoint 웹 연동 기술.pptx

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

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

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

17장 클래스와 메소드

3장

C 프로그래밊 개요

C 언어 프로그래밊 과제 풀이

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

WISHBONE System-on-Chip Interconnection Architecture for Portable IP Cores

PowerPoint Presentation

chap x: G입력

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

adfasdfasfdasfasfadf

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

Microsoft PowerPoint - additional01.ppt [호환 모드]

JSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른

PowerPoint 프레젠테이션

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

PowerPoint 프레젠테이션

슬라이드 1

슬라이드 1

Microsoft PowerPoint - chap10-함수의활용.pptx

PowerPoint Template

쉽게 풀어쓴 C 프로그래밍

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

Microsoft PowerPoint - C++ 5 .pptx

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

PowerPoint 프레젠테이션

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

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

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

슬라이드 1

문서의 제목 나눔고딕B, 54pt

슬라이드 1

Javascript.pages

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

윈도우즈프로그래밍(1)

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

3장 함수

2002년 2학기 자료구조

160322_ADOP 상품 소개서_1.0

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

Microsoft PowerPoint - Java7.pptx

PowerPoint 프레젠테이션

PowerPoint Template

MySQL-.. 1

<4D F736F F F696E74202D20C1A63135C0E520C0A520BDBAC5A9B7A1C7CE>

Data structure: Assignment 1 Seung-Hoon Na October 1, Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은

[ASP: 그림 2-2] date.asp 실행결과 DateAdd 지정된날짜에시간을추가하거나뺀새로운날짜를반환한다. 구문 : DateAdd(interval, number, date) interval : 필수적인인수로 interval 을추가한날짜를나타내는문자식이다. 그값에대

SBR-100S User Manual

14장 파일

Overall Process

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint Python-Function.pptx

Java ...

제목을 입력하세요.

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F32C2F7BDC32E >

변경이력 버전 일자 내용 작성자 최초작성 한은경 v.1.1 문서변경 한은경 v.1.2 문서변경 한은경 v1.3 문서변경 한은경

C++ Programming

Microsoft PowerPoint - 09-Object Oriented Programming-3.pptx

Studuino소프트웨어 설치

8장 문자열

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

11장 포인터

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Secure Programming Lecture1 : Introduction

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

C++ Programming

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint 프레젠테이션

슬라이드 1

2파트-07

설계란 무엇인가?

Microsoft PowerPoint - 05장(함수) [호환 모드]

<B9CCB5F0BEEE20C1A4BAB8C3B3B8AE2E687770>

금오공대 컴퓨터공학전공 강의자료

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

PowerPoint 프레젠테이션

Tcl의 문법

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

Microsoft PowerPoint - u6.pptx

Javascript

Week5

Microsoft PowerPoint 세션.ppt

로거 자료실

±¹Á¦ÆòÈŁ4±Ç1È£-ÃÖÁ¾

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4


Transcription:

Ruby Programming 8 Web Crawling 한국어정보의전산처리 2017. 5. 24.

Web Crawling 의요소기술 웹에접속하여웹문서읽어오기 open-uri 나 net/http 라이브러리이용. 웹문서분석 xml/html parser 라이브러리 ( 예 : nokogiri) 를이용할수도있으나 간단한분석일때는 scan 등의함수로정규표현을검색하여처리할수도있음. 날짜처리 url 이날짜를바탕으로할때는 Date 클래스로날짜처리. 반복 / 재귀알고리즘 수많은웹페이지를방문할때에는 iterative 또는 recursive 알고리즘을사용해야함.

조선일보스포츠기사제목읽어오기 조선일보홈페이지 메뉴전체보기 를클릭하여 스포츠 - 전체 를선택 http://news.chosun.com/svc/list_in/se_list.html?catid=g1 날짜를클릭 http://news.chosun.com/svc/list_in/list_title.html?catid=g1&in date=20170524 하루당스포츠웹페이지가여러페이지로이루어져있고 한페이지당 20 개의기사요약이제시됨. 각기사의제목만추출하고자함. 조선일보홈페이지 html 파일의인코딩은 euc-kr 이므로 iconv 를이용하여출력결과를 utf-8 로변환하여출력

기사의 html 구조 html 소스코드를보면, 각기사는다음과같은구조로되어있음. 붉은색부분만추출하고자함. <dl class="list_item"> <dt><a href="http://news.chosun.com/site/data/html_dir/2017/05/24/2017052400394.html"> [ 줌인 ] 김성근감독형식은자진사퇴, 내용은경질?</a></dt> <dd class="thumb"><a href="http://news.chosun.com/site/data/html_dir/2017/05/24/2017052 400394.html"><img src="http://image.chosun.com/sitedata/thumbnail/201705/24/201705240 0382_0_thumb.jpg" alt=""></a></dd> <dd class="desc"><a href="http://news.chosun.com/site/data/html_dir/2017/05/24/20170524 00394.html"> 김성근한화이글스감독이자진사퇴했고, 한화구단은사의를수용하며이상군투수코치를감독대행에임명했다. 김감독은지난 21 일대전삼성라이온즈전을마..</a></dd> <dd class="date_author"> <span class="date">2017.05.24 ( 수 )</span> <span class="author"> 스포츠조선 = 박재호기자 </span> </dd> </dl>

Ruby script 를바깥쪽부터작성함 사용자로부터시작날짜와끝날짜를입력받아, 각날짜의조선일보스포츠웹페이지를읽어옴. require 'date' require 'net/http' begin_date = Date.new(ARGV[0].to_i, ARGV[1].to_i, ARGV[2].to_i) _date = Date.new(ARGV[3].to_i, ARGV[4].to_i, ARGV[5].to_i) Net::HTTP.start("news.chosun.com") do http # 조선일보홈페이지에접속 begin_date.upto(end_date) do date # 시작날짜부터끝날짜까지 d = date.to_s.gsub("-","") # 날짜를문자열로 : 20170523 url = "/svc/list_in/list_title.html?catid=g1&indate=#{d}" # 해당날짜의스포츠기사웹주소 e = find_end_page(http, url, 1) # 해당날짜의스포츠기사의페이지수알아냄 (1..e).each do i #1 페이지부터끝페이지까지 search(http, url+"&pn=#{i}") #search 함수호출

find_end_page 함수 @end_pattern = %r <li><a style="text-decoration:none;cursor:de fault" class="current">[0-9]+</a></li><li><a style="text-decorat ion:none;cursor:default"> # 마지막페이지의특징을정규표현으로포착함. def find_end_page(http, url, n) # 스포츠기사가몇페이지까지있는지알아내는함수 str = http.get(url+"&pn=#{n}").body #n 번째페이지를읽어옴 if not str =~ @end_pattern # 마지막페이지가아니면 find_end_page(http, url, n+1) #find_end_page 함수재귀호출 else # 마지막페이지이면 return n #n 을반환하고함수종료

search 함수 @pattern = %r <dt><a href="http://news.chosun.com/site /data/html_dir/([0-9]{4}/[0-9]{2}/[0-9]{2})/[0-9]{13}\.h tml">(.*)</a></dt> def search(http, url) puts url #url 출력 str = http.get(url).body #url 의웹문서를불러옴 str.scan(@pattern).each do date, title # 웹문서에서정규표현 (pattern) 을찾음. # 괄호친두부분을 date, title 이라지칭 print date, "\t", title, "\n" #date 와 title 출력

위의코드의문제 해당날짜의스포츠웹페이지가몇페이지까지있는지알아내는함수 (find_end_page) 에서도각웹페이지의문서를읽어오고 각웹문서를읽어와서제목을추출하는함수 (search) 에서도각웹페이지의문서를읽어오게되어있어서 같은일을 2 번반복하는꼴이됨. 페이지수만큼반복하는 iterative algorithm 을적용하는셈. 각웹페이지문서를 1 번만읽어오면서과제를수행하기위해서는 recursive algorithm 이필요함. 날짜와일련번호를가지고 url 을만드는일은 search 함수에게맡기는게나음. ( 그러면 calling code 가더깔끔해짐.)

recursive algorithm 을적용한 calling code Net::HTTP.start("news.chosun.com") do http begin_date.upto(end_date) do date search(http, date, 1) # 첫째페이지에대해 search 함수호출

search 함수 def search(http, date, n) d = date.to_s.gsub("-","") # 날짜를문자열로 : 2017052 3 url = "/svc/list_in/list.html?catid=g1&indate=#{d}&p n=#{n}" puts url #url 출력 str = http.get(url).body str.scan(@pattern).each do date, title print date, "\t", title, "\n" #date 와 title 출력 search(http, date, n+1) if not str =~ @end_pattern # 마지막페이지가아니면 n 을 1 증가시켜함수재귀호출

동아일보 동아일보홈페이지, 스포츠, 최신기사, 날짜별로들어가보면, 전반적인구조는조선일보와비슷함. http://news.donga.com/list/sports/?ymd=20170524&m= 한페이지에 20 개의기사씩제시되고 url 에첫기사의일련번호 (1,21,41,...) 와날짜가포함됨. http://news.donga.com/list/sports/?p=21&prod=news&ymd=2 0170524&m= 조선일보와비슷하게 search 함수를재귀호출하되 이함수의 parameter 에일련번호도포함시켜야함.

동아일보용 calling 코드 @pattern = %r <div class='articlelist'><div class='rightl ist'><a href='http://news.donga.com/list/sports/[0-9]/[0-9]{2}/([0-9]{8})/[0-9]+/[0-9]'><span class='tit'>(.+?)</s pan> @end_pattern = %r </a><strong>[0-9]+</strong><a href ='\?p=none\&prod=news\&ymd=[0-9]{8}\&m=' class='r ight'> Net::HTTP.start("news.donga.com") do http begin_date.upto(end_date) do date search(http, date, 1) #search 함수호출

동아일보용 search 함수 def search(http, date, n) d = date.to_s.gsub("-","") # 날짜를문자열로 : 201705 24 url = "/List/Sports/?p=#{n}&prod=news&ymd=#{d} &m=" puts url #url 출력 str = http.get(url).body #url 의웹문서를불러옴 str.scan(@pattern).each do date, title print date, "\t", title, "\n" #date 와 title 출력 search(http, date, n+20) if not str =~ @end_pattern # 마지막페이지가아니면 search 함수재귀호출