`
gstarwd
  • 浏览: 1572031 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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文献
<script type="text/javascript">&lt;!-- google_ad_client = &quot;pub-4348265167276910&quot;; /* 468x60, 新闻频道文章 */ google_ad_slot = &quot;1877597309&quot;; google_ad_width = 468; google_ad_height = 60; //--&gt; </script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script><script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"></script><script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></script><script>google_protectAndRun(&quot;ads_core.google_render_ad&quot;, google_handleError, google_render_ad);</script>

评论 共 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 引用

感兴趣 研究一下

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

分享到:
评论

相关推荐

    javaeye月刊2008年3月 总第1期.pdf

    15. **Cobra:Java HTML解析器**:Cobra可能是当时一个新的Java库,用于解析HTML文档,对于Web开发和数据抓取很有帮助。 这些内容反映了2008年Java社区的技术焦点和创新方向,包括框架的演进、开发工具的进步以及...

    JavaEye新闻月刊 - 2008年3月 总第1期.pdf

    15. **Cobra:Java HTML解析器**:Cobra是用于解析HTML的Java库,对于处理网页内容和爬虫开发具有实用性。 这些内容展示了2008年Java技术生态的活跃度,包括框架的创新、IDE的改进、编程范式的讨论,以及对新技术和...

    Cobra (HTML工具包源码)

    总的来说,Cobra是一个功能强大的HTML处理工具,适用于需要在Java环境中进行HTML解析、分析和呈现的应用场景。其全面的HTML、JavaScript和CSS支持,以及纯Java的实现,使它在各种项目中都有广泛的应用潜力。

    cobra 0.98.4

    总结来说,Cobra 0.98.4 是一个基于Rhino的HTML DOM解析器和渲染器,它支持HTML4、JavaScript和CSS2,适用于构建动态网页和AJAX应用。通过利用其强大的解析和操作HTML的能力,开发者可以更高效地处理网页内容,提升...

    Java parse HTML to XHTML

    2. **创建解析器**:使用`org.htmlparser.Parser`类创建一个解析器实例。这是处理HTML文档的第一步。 3. **解析HTML**:调用`parse()`方法,传入HTML文件的输入流或字符串,将HTML文档加载到DOM中。 ```java ...

    Lobo Evolution - Java Web Browser:Lobo Evolution是可扩展的全Java Web浏览器和RIA平台-开源

    也是一个可识别JavascriptHTML解析器。 Lobo Evolution 2.0发布CHANGELOG:https://github.com/LoboEvolution/LoboEvolution/releases阅读Wiki:https://sourceforge.net/p/loboevolution/wiki/Home/ Javadoc站点:...

    Loboevolution:Lobo Evolution - Java Web 浏览器

    Lobo Evolution - Java Web 浏览器 Lobo Evolution 是 Lobo Browser 的一个分支。 该项目延续了路宝浏览器(lobochief)的工作。 Lobo Evolution 是一个可扩展的全 Java ... 也是一个支持 Javascript 的 HTML 解析器。

    Borland面试题

    - 面试题中还提到了一些其他的技术细节,如XML解析、SQL Server数据库访问、移动应用开发等。 - 这些特性反映了Delphi作为一个全面的开发工具所具有的强大功能。 以上知识点总结了Borland面试题中涉及的主要技术...

Global site tag (gtag.js) - Google Analytics