Cobra: Java HTML 解析器

Cobra 简介:
Cobra是一个HTML工具包。它包含一个纯Java HTML DOM 分析器和一个页面表现引擎。Cobra支持HTML4,Javascript 和CSS2。声明的新特征有:
  1. 实现了W3C HTML DOM Level 2接口。
  2. 能够解析某些浏览器所识别的 "street HTML"。
  3. 能够在headless模式中被使用。
  4. 当文档被解析时,对于Dom修改提供incremental notifications。
  5. 提供增量地修改Dom的方式,比如,设置一个页面元素的 "innerHTML" 属性。
  6. 识别Javascript.解析过程中对Dom的修改能够在结果Dom中反映出来,另外能实现对Javascript的禁用。
  7. 识别css2。


使用方法:
推荐做法是通过DocumentBuilderImpl类来使用Cobra HTML parser,如下所示:
Java 代码
  1. import  org.lobobrowser.html.parser.*;  
  2. import  org.lobobrowser.html.test.*;  
  3. import  org.lobobrowser.html.*;  
  4. import  org.w3c.dom.*;  
  5. ...  
  6. UserAgentContext context = new  SimpleUserAgentContext();  
  7. DocumentBuilderImpl dbi = new  DocumentBuilderImpl(context);  
  8. //指定文档URI和字符集合   
  9. Document document = dbi.parse(new  InputSourceImpl(inputStream, documentURI, charset));  
import org.lobobrowser.html.parser.*;
import org.lobobrowser.html.test.*;
import org.lobobrowser.html.*;
import org.w3c.dom.*;
...
UserAgentContext context = new SimpleUserAgentContext();
DocumentBuilderImpl dbi = new DocumentBuilderImpl(context);
//指定文档URI和字符集合
Document document = dbi.parse(new InputSourceImpl(inputStream, documentURI, charset));


HtmlParser 类也能被直接使用,尤其是在第三方Dom的实现中,或者在某个比较特殊的Dom节点(引 用innerHTML属性的地方)下解析HTML:
Java 代码
  1. import  org.lobobrowser.html.parser.*;  
  2. import  org.lobobrowser.html.test.*;  
  3. import  org.lobobrowser.html.*;  
  4. import  org.w3c.dom.*;  
  5. import  org.w3c.dom.html2.*;  
  6. ...  
  7. UserAgentContext context = new  SimpleUserAgentContext();  
  8. DocumentBuilderImpl dbi = new  DocumentBuilderImpl(context);  
  9. HTMLDocument document = (HTMLDocument) dbi.createDocument();  
  10. ...  
  11. HtmlParser parser = new  HtmlParser(context, document);  
  12. parser.parse(myReader, someParentNode);  
import org.lobobrowser.html.parser.*;
import org.lobobrowser.html.test.*;
import org.lobobrowser.html.*;
import org.w3c.dom.*;
import org.w3c.dom.html2.*;
...
UserAgentContext context = new SimpleUserAgentContext();
DocumentBuilderImpl dbi = new DocumentBuilderImpl(context);
HTMLDocument document = (HTMLDocument) dbi.createDocument();
...
HtmlParser parser = new HtmlParser(context, document);
parser.parse(myReader, someParentNode);


性能贴士
远程脚本和css文档载入速度对解析器的性能影响显著,有两种提高性能的方法:
  1. 禁用Javascripte 或 css
  2. 启用某些缓存机制


相关信息
本文所涉及内容在 Cobra 0.98.1+版本中均有体现,相关下载信息和API文档:
SourceForge下载地址
Api文献

评论 共 5 条 发表评论

5 楼 wukele 2010-03-25 15:01 引用
[/b][b] [b][/b] [/i][i] [/u][u] [color=brown][/color]          
4 楼 zhangyou1010 2010-02-04 11:38 引用
我做的一个程序中用这个支持JS.
转DOM还好. 执行JS时可能会报异常. 对JS语法支持与浏览器还有点差距.
我对cobra.jar做了一点点改动. 主要是请求超设置与字符转码.
3 楼 zhangyou1010 2010-02-04 11:38 引用
我做的一个程序中用这个支持JS.
转DOM还好. 执行JS时可能会报异常. 对JS语法支持与浏览器还有点差距.
我对cobra.jar做了一点点改动. 主要是请求超设置与字符转码.
2 楼 Eric_2007 2008-12-19 16:27 引用
哪位高手能详细写个帖子,像这类Html的解析工具该如何学习呢,感觉不知从哪下手,学习效率很低啊,难度很大啊!如有高手回应,本人将不胜感 激!
1 楼 fins 2008-03-27 09:07 引用

感兴趣 研究一下

基于这个应该可以开发一些类似自动测试的东西吧

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值