海纳百川 用RSS特制新闻专区
技术与开发
RSS(Readlly Simple Syndication) 是在线共享内容的一种简易方式(用来分发和汇集网页内容),可以理解为资源共享模式的延伸。RSS搭建了一个信息共享的技术平台,使每个人都能成为信息的提供者。
我在网上学习的时候,发现一些网站总能得到别人网站的最新新闻,觉得比较神奇。我很想把这个效果应用到我的个人网站上,作个奥运的新闻专区,但不知道这个效果应该怎么实现?
这种效果非常实用,可以抓取别人网站最新的新闻,显示在自己的网站中,但前提条件是那些网站提供了RSS,网上不难找到。首先找到网站的RSS订阅地址,然后我们借助RSS开源工具Rome解析远程获得的RSS文件,最后对这些数据进行整理就可以发布到自己的网站上了。
第一步 新建RSS添加页面
打开开发工具MyEclipse,执行菜单“New”下的“Web Project”命令,导入所需的Jar包(Rome-0.9.jar、Jdom.jar、Jstl.jar、Standard.jar),再创建一个“search.jsp”的JSP页面,输入相关代码(代码下载地址:http://www.cpcw.com/bzsoft)。
第二步 封装RSS获得到的数据
打开工程,执行菜单“New”下的“Package”命令,创建一个包,命名为“org.yifeng.model”,然后创建临时的数据类DTO,名为“RssDTO.java”,它用于封装RSS得到的数据,输入相关代码(代码下载地址:http://www.cpcw.com/bzsoft)。
第三步 设计远程读取RSS功能
在工程文件下,新建一个包,命名为“org.yifeng.webapp.servlet”,然后新建一个类文件并命名为“RSSReaderServlet”,在其中输入代码,其中关键代码如下(完整代码下载地址:http://www.cpcw.com/bzsoft):
String URL = request.getParameter("url").trim();
/* 读取远程的一个RSS文件 */
SyndFeedInput input = new SyndFeed
Input();
SyndFeed feed = null;
try {
URL feedUrl = new URL(URL);
feed = input.build(new XmlReader(feedUrl));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (FeedException e) {
e.printStackTrace();
}
List
Iterator entryIter = feed.getEntries().iterator();
while (entryIter.hasNext()
第四步 创建新闻集合列表页面
新建一个用来创建新闻集合列表的 JSP页面,命名为“rssList.jsp”,这个页面显示RSS读取过来的数据列表,在其中输入代码:
<script type="text/javascript">
var loadDiv=parent.document.getEleme
ntById('loadDiv');
parent.document.getElementById('sele
ctButton').disabled = null;
loadDiv.style.display = "none";
</script>
<body>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<c:forEach var="rss" items="${reques
tScope.rssList}">
<tr bgcolor="#eeeeee">
<td style="PADDING-LEFT: 5px; PADDING-TOP: 5px"
height="30"><b><c:out value="${rss.title}" escapeXml="false"/></b></td>
</tr>
<tr bgcolor="#eeeeee">
<td
style="PADDING-LEFT: 5px"><c:out value="${rss.description}" escapeXml=
"false" /></td>
</tr>
<tr bgcolor="#eeeeee">
<td style="PADDING-LEFT: 5px; PADDING-TOP: 5px"><a
href="<c:out value='${rss.link}'/>"
target="_blank"><c:out value="${rss.link}"/></a></td>
style="PADDING-LEFT: 5px;PADDING-BOTTOM: 5px;PADDING-TOP: 5px"><span>发布时间:<c:out value="${rss.publishedDate}"/></span></td>
完成上述功能后,编译并运行此程序,然后在地址栏中输入http://localhost:8080/RSS(例如输入新浪的RSS地址:http://rss.sina.com.cn/news/marquee/ddt.xml),即可得到想要的效果图了。
总结
通过本例的学习,读者朋友了解了如何远程调用RSS,利用这种技术我们可以任意抓取别人网站的新闻显示在自己网站上,轻轻松松就可以制作出奥运新闻专区。