java解析html

java有很多解析html的开源包,有htmlparser、cobra、jsoup、html4j、htmlclean等,http://www.open-open.com/30.htm
项目中使用的是cobra,其他的没用过。cobra能解析javascript和css,项目中没有用这两项,也没研究过这块的代码。也是因为支持这些,如果不禁用,会占用相当大的内存,比如每个节点都会含有一个xxxStyle的对象。cobra的源码相当大,构造document的基本思路是顺序读页面数据,找tag的开始<和结束>符,在结束符前碰到的所有标签、文本都加为子节点。cobra不支持纠错,当碰到网页中有错误的标签,比如有<,没有>,解析就会犯错。解析也不是完美的,做项目的时候,记得抽取节点和抽取属性部分的代码都改过。
看网上比较火的貌似是htmlparser和jsoup。网上各开源库的对比很少,有个老外试过这么几个:NekoHTML, HtmlCleaner, TagSoup, jTidy,说最准确的是HtmlCleaner(用//a测试的)。也有人说cobra最好用,也有人说jsoup比htmlparser好用。以下是网上大家的总结:
http://www.benmccann.com/blog/java-html-parsing-library-comparison/
http://solonote.iteye.com/blog/567805
http://www.verydemo.com/demo_c89_i19070.html
有空以后我再来逐个试下~
补充:
cobra比较复杂,最近用了下HtmlCleaner,生成TagNode对xpath支持不好(不支持contains等),但是可将其转成dom,即完美支持。Document document = new DomSerializer(new CleanerProperties()).createDOM(tagNode);
jsoup不支持xpath,弃用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值