Java网页解析
来源:互联网 发布:英语小说阅读软件 编辑:程序博客网 时间:2024/05/16 01:57
介绍
今天给大家推荐一款最好的网页解析类库—HtmlCleaner。至少是目前为止最好的Java解析库。
与HtmlCleaner结缘是在年初的时候,因为一项工作需要解析Html页面,所以我在网上遍寻Html解析库。
网上口碑极佳的是HTML Parser这个库,我试了一下,速度极慢,处理一个比较大的网页需要几百毫秒,更要命的是,有些网页解析不了!
经过千辛万苦,我终于找到了籍籍无名的HtmlCleanner。一见之下,惊为天人!
HtmlCleanner
HtmlCleaner极其短小精悍,源码一共只有260KB,并且速度惊人,只需要10毫秒左右就可以处理完HtmlParser需要300毫秒处理的Html页面。
而且,根据我对网上随机的网页进行的测试,没有一个对付不了的。
打开HtmlCleaner的javadoc,常常的一串接口和类。别怕,那些都不用您操心。我们只需要关心HtmlCleaner这个类就可以了。
HtmlCleaner库的使用极其简便,只需要调用HtmlCleaner类的几个方法即可。
典型的使用过程如下:
HtmlCleaner cleaner = new HtmlCleaner(...); // one of few constructors
cleaner.setXXX(...) // optionally, set cleaner's behaviour
clener.clean(); // calls cleaning process
clean方法就完成了对Html页面的解析。
cleaner.writeXmlXXX(...); // writes resulting XML to string, file or any output stream
// cleaner.createDOM(); // creates DOM of resulting xml
DomSerializer类的实例的createDOM方法可以返回org.w3c.dom.Document对象。不错,这就是Java标准的xml文档的表示。然后,你就可以使用任何第三方库来处理xml文档了。
// cleaner.createJDom(); // creates JDom of resulting xml
你也可以生成JDom对象,用JDom处理。
下面是我用HtmlCleaner写的一个方法
public Document convertHtmlToXML(URL url){
// create an instance of HtmlCleaner
HtmlCleaner cleaner = new HtmlCleaner();
// take default cleaner properties
CleanerProperties props = cleaner.getProperties();
TagNode tagNode=null;
Document document=null;
try {
tagNode = cleaner.clean(url);
document= new DomSerializer(props, true).createDOM(tagNode);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return document;
}
得到Document之后,可以使用dom4j等xml处理库进行处理。
HtmlCleanner实现方法
查看HtmlCleanner的源码可以看到,HtmlCleanner的设计思想非常简单,就是使用正则表达式解析Html页面。
而它的数据容器类TagNode也和我设计OXmlEd库的想法类似。也是简单的把XML当做一个树的结构。不过TagNode类要比我的INode接口复杂一些,多了不少东东。我的INode接口内容很少,因为我不关心注释。
我的OXmlEd后来根据HtmlCleaner做了更新,这样,您可以使用OXmlEd库来直接操纵HtmlCleaner解析的Html页面的内容了。但最近很忙,一直没有整理,过几天再上传OXmlEd的新版本吧。OXmlEd库的介绍在
http://blog.csdn.net/shendl/archive/2007/08/23/1755218.aspx
Host站点在:http://sourceforge.net/projects/oxmled/
总结
HtmlCleanner库写得非常好,由此可见,一个好的设计思想胜过一切。开源库中良莠不齐,这很正常,HtmlCleaner是我寻获的一把利器,现在转送给诸君。
- Java网页解析
- java网页解析工具包
- Java抓取网页 解析网页HtmlParser
- java 网页解析工具包 Jsoup
- java 网页解析工具包 Jsoup
- java 网页解析工具包 Jsoup
- Java使用Jsoup解析网页
- java 网页解析工具包 Jsoup
- [Java] 网页相对URL解析
- Java 网页 读取 解析 java天气预报
- 基于java正则表达式的网页解析
- 基于java正则表达式的网页解析
- java解析Internet网页中的内容
- java爬取网页源代码,解析
- java : jsoup 网页 table 解析范例
- java 使用Jsoup解析URL网页信息
- java 爬虫 网页解析(Jsoup)
- 网页解析
- Windows线程同步的方法
- 日历之完美版-添加了输入框
- java常用设计模式
- [转载]基于效率考虑,对Windows多线程同步机制的选择,分析与实测
- 论ntoskrnl.exe中的导出函数、非导出函数、公开函数、非公开函数
- Java网页解析
- ChangeEnvironmentTool 总结
- 黑马程序员-java设计模式之单例模式
- 数据库连接池
- ArrayAdapter requires the resource ID to be a TextView 的解决办法
- Broken Keyboard (a.k.a. Beiju Text)
- 怎么在地址栏显示公司的logo
- 读写锁的特性
- vim 常用命令