HTML Parser 对 IFrame 的处理

来源:互联网 发布:黑客用python做什么 编辑:程序博客网 时间:2024/04/18 15:34

 

logo

 

近日在研究爬虫相关的东东,用到 HTML Parser,其他的都不说了,网上多的是,对自定义的 tag 有点心得体会,来说说。

 

一、HTML 简单介绍

  用百度百科的话来说:

  htmlparser 是一个纯的java写的html解析的库,它不依赖于其它的 java 库文件,主要用于改造或
  提取 html。它能超高速解析 html,而且不会出错。
  毫不夸张地说,htmlparser 就是目前最好的 html 解析和分析的工具。
  无论你是想抓取网页数据还是改造 html 的内容,用了 htmlparser 绝对会忍不住称赞。

 

  用其官方自己的话来说:

  HTML Parser is a Java library used to parse HTML in either a linear or nested fashion. Primarily used for transformation or extraction, it features filters, visitors, custom tags and easy to use JavaBeans. It is a fast, robust and well tested package.

 

二、对于 IFrame 这类常见的 tag,奇怪 HTML Parser 居然会没有(我用的是目前最新的 htmlparser-2.0.jar),网上找了一堆,都似乎没有个好办法,自己慢慢看其 Java Doc 尝试,居然还弄出来了。

  首先新建个 Java 工程,创建目录结构 org/htmlparser/tags,并把从官网下载的 htmlparser-2.0.jar 添加到工程,反编译一下 FrameTag.class,参照编写 IFrameTag.java,完整内容如下:

 

 

  然后编译这个类得到 IFrameTag.class 文件,再用 WinRAR 或者 7Zip 打开官方的 jar 包,把自己编译好的这个 IFrameTag.class 放到 jar 包目录 org.htmlparser.tags 下,这个就得到了一个完整的 jar 包。这时候就可以删除我们工程里自定义的目录结构 org/htmlparser/tags 了。

 

  接下来就是怎么使用了,通常使用可以使用 OrFilter 的组合,通过 extractAllNodesThatMatch 来提取节点。不过在这之前,需要先小小修改一下代码,否则这个自定义的 tag 还是不起作用的。在调用

  之后,还需要设置一下(这才是关键)

  只有这样,后面通过 extractAllNodesThatMatch 的才能正确提取到这个 tag。

  Good luck!

 

 

 

参考文献:

  1、HTML Parser 官方主页:http://htmlparser.sourceforge.net/

  2、HTML Parser 官方文档:http://htmlparser.sourceforge.net/javadoc/index.html

  3、HTML Parser 百度百科:http://baike.baidu.com/view/1174491.htm