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,弃用
   

你可能感兴趣的:(java,html,解析)