前几天写了一个《Java抽取HTML内容》的文章,路径是
http://javapub.iteye.com/blog/719658。在此基础上做了一个Baidu的关键词抽取工具。可以抽取和查询百度的风云榜。这里也是在尝试着去开发一个Java的搜索引擎(大家见笑了),首先从关键词排名入手吧。界面如图:
原理也不难,
1.从网络定位输入流,并读取这个输入流。
URL url = new URL(urlPath);
// 以特定格式读取文件流。
InputStreamReader isr = new InputStreamReader(url.openStream(),
"gb2312");
BufferedReader br = new BufferedReader(isr);
这里我们读取的是baidu的输入流,自然用bgb2312格式,以后可以做的更加智能一些,自动判断流的格式。
2.定位内容
这里我们是定位baidu风云榜的内容,所以比较准确,以后更加复杂的搜索引擎定位算法,那是以后考虑的事情了。
if ("".equals(s.trim())) {
continue;
} else if ("<tbody id=\"listdata\">".equals(s.trim())) {
beginFind = true;
} else if ("</tbody>".equals(s.trim())) {
break;
}
3.解析内容
利用正则表达式删除我们关心的内容中的所有标签,留下内容。
private static String findContent(String html) {
// 配置html标记。
Pattern p = Pattern.compile("<(\\S*?)[^>]*>.*?| <.*? />");
Matcher m = p.matcher(html);
String rs = new String(html);
// 找出所有html标记。
while (m.find()) {
// 删除html标记。
rs = rs.replace(m.group(), "");
}
return rs;
}
4. 展示内容
根据我们得到的内容,用表格的形式展示,表格的形式是挺好看,但不好保存,这点随后的版本会考虑保存的问题,现在就先这样吧。这里用到了我以前写的一个JTable的jar包,可以方便的生成一个可以自动排序的JTable。
tableOp = new DefaultZTableFactory();
// 设置table信息生成Table。
tableOp.setTableInfors(tableHeader, tableBody, colWidth);
// 得到Table。
ztable = tableOp.getZTable();
// 设置Table的样式, 隔行变色。
tableOp.setTableStyle(ztable);
5. 附件是源码和打包好的EXE文件,欢迎大家交流。
6. 相关内容
《Eclipse 打第三方Jar包 插件 net.sf.fjep.fatjar》
http://javapub.iteye.com/blog/712695,将第三方的Jar包,打入我们自己的Jar包中。
《Eclipse 将Jar包打成Exe运行 exe4j》
http://javapub.iteye.com/blog/712729,将一个Jar包打成EXE文件。
《Swing JTable工厂(table4j)》
http://javapub.iteye.com/blog/686157,一个JTable工厂,生成自动排序,隔行变色的JTable,并可以线程安全的操作JTable的增删改查。
文章地址:
http://javapub.iteye.com/blog/721465