没有合适的资源?快使用搜索试试~ 我知道了~
htmlparser使用详解
需积分: 9 11 下载量 151 浏览量
2011-02-25
09:30:30
上传
评论
收藏 191KB DOC 举报
温馨提示
试读
21页
HTMLParser具有小巧,快速的优点,缺点是相关文档比较少(英文的也少),很多功能需要自己摸索。对于初学者还是要费一些功夫的,而一旦上手以后,会发现HTMLParser的结构设计很巧妙,非常实用,基本你的各种需求都可以满足。 这里写了一点入门的东西,希望能对新学习HTMLParser的朋友们有所帮助。
资源推荐
资源详情
资源评论
具有小巧,快速的优点,缺点是相关文档比较少(英文的也少),很多功能需要自己摸索。对于初学者还是要费一些功夫的,而
一旦上手以后,会发现 的结构设计很巧妙,非常实用,基本你的各种需求都可以满足。
这里我根据自己这几个月来的经验,写了一点入门的东西,希望能对新学习 的朋友们有所帮助。(不过当年高考本人语文只比
及格高一分,所以文法方面的问题还希望大家多多担待)
的核心模块是 类,这个类实际完成了对于 页面的分析工作。这个类有下面几个构造函数:
!"#$$$$$$ %&$
'$ %&$
'$%&$
!"#$$$$$$%&$
和一个静态类 '$'$
对于大多数使用者来说,使用最多的是通过一个 !"#$$$ 或者一个保存有网页内容的字符串来初始化 ,或者使用静态函数来
生成一个 对象。 的代码很简单,是针对调试和跟踪分析过程的,一般不需要改变。而使用 则是一个相对比较高
级的话题,放到以后再讨论吧。
这里比较有趣的一点是,如果需要设置页面的编码方式的话,不使用 就只有静态函数一个方法了。对于大多数中文页面来说,好像这
是应该用得比较多的一个方法。
下面是初始化 的例子。
()
)*+,"
)*-$'"
)*-$'
)*
)*$!"#$$$
)*$!"
*&$.
/00
01%%%()
0/
$2
*'$&3#45&678+97
**'$(2
:2':$$$%'$(+:&3#45&'::7;$$7<&$
2<
<
'$$'$(32
:2
+," 6 $% +,"$% -$'"$% -$' $% (3
&3#45&
'$(#$$677
'$(
%(6$=6$2
(#$$>6(>7?$7
<
$(#$$
<
&$2
$77
<
<
*$'$@A2
'$(#$$6$7&B/:'/7
:2
//Parser parser = Parser.createParser(szContent, ENCODE);
//Parser parser = new Parser( szContent );
6 $% !"#$$$ $%
!"7B//CDEFFCBGFGF/7$#$$$
&$.*6$%&$.
*H3I*
'$-$6*&
-$
<
&$2
<
<
<
加重的部分测试了几种不同的初始化方法,后面的显示了结果。大家看到能 出内容就可以了,如何操作访问 的内容我们在后面
讨论。
将解析过的信息保存为一个树的结构。3 是信息保存的数据类型基础。
请看 3 的定义:
$ 3$#$
Node 中包含的方法有几类:
对于树型结构进行遍历的函数,这些函数最容易理解:
3$:取得父节点
3#$:取得子节点的列表
3#:取得第一个子节点
3#:取得最后一个子节点
3*'$:取得前一个兄弟(不好意思,英文是兄弟姐妹,直译太麻烦而且不符合习惯,对不起女同胞了)
33'$:取得下一个兄弟节点
取得 Node 内容的函数:
'$:取得文本
'$$'$:取得纯文本信息。
'$:取得 信息(原始 )
'$$*:取得 信息(原始 )
'$'$:取得字符串信息(原始 )
:取得这个 3 对应的 对象
$'$:取得这个 3 在 页面中的起始位置
$&$$:取得这个 3 在 页面中的结束位置
用于 Filter 过滤的函数:
*-$33;:基于 ; 的条件对于这个节点进行过滤,符合条件的节点放到 中。
用于 Visitor 遍历的函数:
*3.*:对这个 3 应用 *
用于修改内容的函数,这类用得比较少:
*:设置这个 3 对应的 对象
*'$:设置文本
*#$3$:设置子节点列表
其他函数:
*'$H$:执行这个 3 对应的操作(只有少数 有对应的操作)
4)$:接口 #$ 的抽象函数。
实际我们用 最多的是处理 页面, 或 . 相关的函数是必须的,然后第一类和第二类函数是用得最多的。第一类函
数比较容易理解,下面用例子说明一下第二类函数。
下面是用于测试的 HTML 文件:
J=54#K&!+-#7L//IM#//55NCF$$//&377B//%%%%M/"/C/55/CL
$$7O
JOJLP*67#$$L:7$$67/6DMCD7OJO白泽
居L%%%()J/OJ/O
J$67B//%%%%M/CQQQ/7O
J:O
J*67R$7O
J*67$7O
J=LL这是注释LLO
白泽居L%%%()
J 67B//%%%()7O白泽居L%%%()J/O
J/*O
白泽居L%%%()
J/*O
J/:O
J/O
测试代码:
/00
01%%%()
0/
()
)*+,"
)*-$'"
)*-$'
)*
)*$!"#$$$
)*$!"
3
3-
/00
01%%%()
0/
$2
*'$&3#45&678+97
**'$(2
:2':$$$%'$(+:&3#45&'::7;$$7<
&$2<
<
'$$'$(32
:2
+,"6$%+,"$%-$'"$%-$'$%(3
&3#45&
'$(#$$677
'$(
%(6$=6$2
(#$$>6(>7?$7
<
$(#$$
<
&$2
$77
<
<
*$'$@A2
:2
6$%!"#$$$$%
!"7B//CDEFFCBGFGF/7$#$$$
3-6$32
3$6$3
7B7>$
7$B7>$$'$
7B7>$
7B7>$
7 B7>$
7'$B7>$'$
766666666666666666666666666666666666666666666666667
<
<
&$2
':$$7&$B7>
<
<
<
输出结果:
B=54#K&!+-#7L//IM#//55NCF$$//&377B//%%%%M/"/C/55/CL
$$7
$B
BJ=54#K&!+-#7L//IM#//55NCF$$//&377B//%%%%M/"/C/55/CL
$$7O
BJ=54#K&!+-#7L//IM#//55NCF$$//&377B//%%%%M/"/C/55/CL
$$7O
BJ=54#K&!+-#7L//IM#//55NCF$$//&377B//%%%%M/"/C/55/CL
$$7O
'$B5:B=54#K&!+-#7L//IM#//55NCF$$//&37
7B//%%%%M/"/C/55/CL$$$BF$BCDC
6666666666666666666666666666666666666666666666666
B
$B
B
B
B
'$BCDC@FCDCACDM@CFAB?$
6666666666666666666666666666666666666666666666666
B
$B白泽居L%%%()
BJOJLP*67#$$L:7$$67/6DMCD7OJO白泽居L
%%%()J/OJ/O
BJOJLP*67#$$L:7$$67/6DMCD7OJO白泽居L
%%%()J/OJ/O
BJOJLP*67#$$L:7$$67/6DMCD7OJO白泽居L
%%%()J/OJ/O
'$B&H5BCDM@CFACDQ@CSAB
CDQ@CSACQE@CETABLP*67#$$L:7$$67/
CQE@CETADFT@CGCAB
DFT@CGCADDM@CCFFAB白泽居L%%%()
&$DDM@CCFFADMC@CCFGAB/
&$DMC@CCFGADMG@CCCUAB/
6666666666666666666666666666666666666666666666666
B
$B
B
B
B
'$BDMG@CCCUADTF@DFAB?$
6666666666666666666666666666666666666666666666666
B$67B//%%%%M/CQQQ/7
$B
剩余20页未读,继续阅读
资源评论
zhanglinyan
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功