最好的网页解析类库HtmlCleanner

最好的网页解析类库HtmlCleanner
http://edu.codepub.com/2009/1028/16955.php

时间:2009-10-28 09:45:15来源:网络 作者:未知 点击:4次
介绍
介绍

今天给大家推荐一款最好的网页解析类库—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库的介绍在
总结
HtmlCleanner库写得非常好,由此可见,一个好的设计思想胜过一切。开源库中良莠不齐,这很正常,HtmlCleaner是我寻获的一把利器,现在转送给诸君
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值