100 likes | 356 Views
RSS Reader 만들기 - 중간 과제 -. Internet Computing Laboratory @ KUT Youn-Hee Han. RSS 2.0. RSS (Really Simple Syndication) XML 을 통하여 뉴스나 블로그 사이트에서 주로 사용하는 컨텐츠 표현 방식이다 . 웹 사이트 관리자는 RSS 형식으로 웹 사이트 내용을 보여 준다 . 이 정보를 받는 사람은 다른 형식으로 이용할 수 있다 .
E N D
RSS Reader 만들기- 중간 과제 - Internet Computing Laboratory @ KUT Youn-Hee Han
Advanced Web Programming RSS 2.0 • RSS (Really Simple Syndication) • XML을 통하여 뉴스나 블로그 사이트에서 주로 사용하는 컨텐츠 표현 방식이다. • 웹 사이트 관리자는 RSS 형식으로 웹 사이트 내용을 보여 준다. • 이 정보를 받는 사람은 다른 형식으로 이용할 수 있다. • RSS is a dialect of XML. All RSS files must conform to the XML 1.0 specification RSS feed 아이콘
RSS Sample RSS 2.0 기반 Sample 파일 <?xml version="1.0"?> <rss version="2.0"> <channel> <title>Liftoff News</title> <link>http://liftoff.msfc.nasa.gov/</link> <description>Liftoff to Space Exploration.</description> <language>en-us</language> <pubDate>Tue, 10 Jun 2003 04:00:00 GMT</pubDate> <lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate> <docs>http://blogs.law.harvard.edu/tech/rss</docs> <generator>Weblog Editor 2.0</generator> <managingEditor>editor@example.com</managingEditor> <webMaster>webmaster@example.com</webMaster> <item> <title>Star City</title> <link>http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp</link> <description>How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's <a href="http://howe.iki.rssi.ru/GCTC/gctc_e.htm">Star City</a>.</description> <pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate> <guid>http://liftoff.msfc.nasa.gov/2003/06/03.html#item573</guid> </item> … </channel> </rss>
RSS Sample of NAVER <?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0"> <channel> <title>Naver Open API - news ::'go'</title> <link>http://search.naver.com</link> <description>Naver Search Result</description> <lastBuildDate>Fri, 02 Mar 2007 11:32:23 +0900</lastBuildDate> <total>72525</total> <start>1</start> <display>10</display> <item> <title>외국인 노동자, 인터넷으로 재입국 허가 받을 수 있다</title> <originallink>http://www.heraldbiz.com/SITE/data/html_dir/2007/03/02/200703020070.asp</originallink> <link>http://news.naver.com/news/read.php?mode=LSD&office_id=112&article_id=0000061110 §ion_id=102&menu_id=102</link> <description>... 실시하기로 했다.재입국허가를 받으려는 외국인은 출입국관리국 홈페이지(http://www.immigration.<b>go</b>.kr) 또는 외국인종합지원서비스(G4F) 포탈(http://www.g4f. <b>go</b>.kr)에 접속해 회원가입후 원하는 민원을 신청할 수 있다. 전자민원을 신청한 뒤에 처리 결과는... </description> <pubDate>Fri, 02 Mar 2007 11:23:00 +0900</pubDate> </item> … </channel> </rss> 4
RSS Analysis by using DOM RSS 분석하기 import org.w3c.dom.*; import javax.xml.parsers.*; import java.net.URLEncoder; public class DOMAnalyzer { static String xmlString = new String(); public static void main(String[] args) { try { DocumentBuilderFactory dBFactory = DocumentBuilderFactory.newInstance(); dBFactory.setIgnoringElementContentWhitespace(true); DocumentBuilder dBuilder = dBFactory.newDocumentBuilder(); String queryURL = "http://openapi.naver.com/search? key=8f2e88ae4a6cf2894e0a897ef21c1817&target=news&start=1 &display=10&query=" + URLEncoder.encode("한기대", "UTF-8"); Document document = dBuilder.parse(queryURL); displayNode(document.getDocumentElement()); System.out.println(xmlString); } catch(Exception e) { e.printStackTrace(System.err); } } …… 교재 309 페이지 5
4개의 서비스 • 실시간 검색어 서비스 • String queryURL31 = "http://openapi.naver.com/search?key=8f2e88ae4a6cf2894e0a897ef21c1817&query=nexearch&target=rank"; • 뉴스 서비스 • String queryURL2 = "http://openapi.naver.com/search?key=8f2e88ae4a6cf2894e0a897ef21c1817&target=news&start=1&display=10&query=" + URLEncoder.encode("한기대", "UTF-8"); • 이미지 서비스 • String queryURL3 = "http://openapi.naver.com/search?key=8f2e88ae4a6cf2894e0a897ef21c1817&target=image&start=1&display=10&query=" + URLEncoder.encode("한기대", "UTF-8"); • 블로그 서비스 • String queryURL4 = "http://openapi.naver.com/search?key=8f2e88ae4a6cf2894e0a897ef21c1817&target=blog&display=10&start=1&sort=sim&query=" + URLEncoder.encode("한기대", "UTF-8"); 6
4개의 서비스 통합 소스 코드 예 DocumentBuilderFactory dBFactory = DocumentBuilderFactory.newInstance(); dBFactory.setIgnoringElementContentWhitespace(true); DocumentBuilder dBuilder = dBFactory.newDocumentBuilder(); String queryURL1 =… //실시간검색어 String queryURL2 =… //news String queryURL3 =… //images String queryURL4 =… //블로그 Document document1 = dBuilder.parse(queryURL1); displayNode(document1); xmlString += "\n\n"; Document document2 = dBuilder.parse(queryURL2); displayNode(document2); xmlString += "\n\n"; Document document3 = dBuilder.parse(queryURL3); displayNode(document3); xmlString += "\n\n"; Document document4 = dBuilder.parse(queryURL4); displayNode(document4); File f = new File("out.dat"); PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(f), "UTF-8")); out.println(xmlString); out.close(); 7
과제 요구사항 • 목표 • DOM 또는 SAX API를 활용하여 네이버의 4개 웹 서비스를 통합하여 보여주는 “실시간 인기 검색어 통합 뷰어”를 개발 • 요구사항 • NAVER 실시간 인기 검색어를 주어진 주기 (Default: 1분) 마다 갱신해서 분석하여 화면에 리스트 한다. • 10개의 실시간 인기 검색어 리스트 중 하나를 클릭하면 다음과 같은 정보를 한 화면에 보여준다. • NAVER 뉴스 • NAVER 블로그 • NAVER 이미지 • 내용이 HTML으로 되어 있을 경우 HTML 페이지 형태로 출력한다. • 제작한 프로그램에서 제시한 정보들의 좀 더 구체적인 정보를 보기 위하여 링크를 최대한 제공한다. 8
2007년 10월 31일오후 4시 30분 “변리사” 관련 뉴스 리스트 제목: … 내용: … 링크: … 제목: … 내용: … 링크: … … … “변리사” 관련 블로그 리스트 제목: … 내용: … 링크: … 제목: … 내용: … 링크: … … … • 인기 검색어 순위 • 변리사 • 안양외고 • 최강희 • … • … • … • … • … • … • … “변리사” 관련 이미지 리스트 … 화면 디자인 예 9
기타 • 구축 방법 • Case 1: 자바 윈도우 프로그래밍 • Case 2: 서블릿 + JSP를 활용한 웹 프로그래밍 • 제출 내용 • 소스 코드 별도 • 소스 코드, 설명, 출력 내용을 캡쳐해서 담은 보고서 • 위 내용을 하나로 압축하여 하나의 zip 파일을 업로드 • 기한 (중간고사 대체) • 11월 4일 저녁 10