RSS는 XML 기반의 표준 이므로 내부적으로 XML parsing을 한 것을 짚고 넘어가자.
이번 예제에서는 한겨레신문기사를 크롤링 해볼것이다.
https://www.hani.co.kr/arti/RSS/list1.html
국제 카테고리에 속한 기사를 크롤링해보려고한다.
it.java
package controller;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/it")
public class it extends HttpServlet{
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String rss = req.getParameter("rss");
rss = rss == null ? "https://rss.joins.com/joins_it_list.xml" : rss;
URL url = new URL(rss);
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
String s = null;
resp.setContentType("text/xml; charset=utf-8");
while((s = br.readLine()) != null){
resp.getWriter().println(s);
}
}
}
student.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
$(function() {
$.get("it", {rss:'https://www.hani.co.kr/rss/international'},function(data){
console.log(data);
var dataXml = $.parseXML(data);
console.log(dataXml);
var str = "<table border='1'>"
//태그찾는친구 // 반복순환(for문역할)
$(dataXml).find("item").each(function() {
var title = $(this).find("title").text();
var link = $(this).find("link").text();
var description = $(this).find("description").text();
var author = $(this).find("author").text();
var pubDate = $(this).find("pubDate").text();
str += "<tr>"
str += "<td><a href='" + link + "'>" + title + "</a></td>"
str += "<td>" + author + "</td>"
str += "<td>" + pubDate + "</td>"
str += "</tr>"
console.log(title, link, description, author, pubDate);
})
str += "</table>"
$("body").append(str);
}, "text")
})
</script>
</head>
<body>
</body>
</html>
결과화면
-student.jsp 결과 화면
-기사 링크 클릭
-it.java 결과화면
반응형
'Library & API' 카테고리의 다른 글
Hikari - 히카리 커넥션 풀(Connection pool) 사용해보기 (0) | 2022.03.29 |
---|---|
주소 팝업(+검색) api 사용 - jsp (0) | 2022.03.26 |
이메일 발송 (0) | 2022.03.26 |
HTML parsing - 타 사이트 정보 가져와서 DB에 저장 (0) | 2022.03.26 |
DOM(Document Object Model) - 문서 객체 모델 기초개념 (0) | 2022.03.25 |