HTML Parser 对 IFrame 的处理

 

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值