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