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.benmc
cann.com/blog/java-html-parsing-library-comparison/
http://solonote.iteye.com/blog/567805
http://www.verydemo.com/demo_c89_i19070.html
有空以后我再来逐个试下~