.net HTMLParser详细使用说明 强大的Filter类 解析HTML文档如此简单


======================================================
注:本文源代码点此下载
======================================================

背景:

htmlparser原本是一个在sourceforge上的一个java开源项目,使用这个java类库可以用来线性地或嵌套地解析html文本。他的 功能强大和开源等特性吸引了大量web信息提取的工作者。然而,许多.net开发者朋友一直在寻找一种能在.net中使用的htmlparser类库,笔 者将介绍winista.htmlparser类库,对比于其他原本数量就非常少的.net版htmlparser类库,winista的版本的类库结构 可以说更接近于原始java版本。

该类库目前分为utltimate、pro、lite和community四个版本,前三个版本都是收费的。只有community版本可以免费下载并查看所有的源码。

(一)filter类

filter一看就知道,肯定是对结果进行过滤,取得需要的内容。htmlparser在org.htmlparser.filters包之内一共界说了16个差别的filter,也可以分为几类。

判定类filter:

tagnamefilter

hasattributefilter

haschildfilter

hasparentfilter

hassiblingfilter

isequalfilter

逻辑运算filter:

andfilter

notfilter

orfilter

xorfilter

其他filter:

nodeclassfilter

stringfilter

linkstringfilter

linkregexfilter

regexfilter

cssselectornodefilter

所有的filter类都实现了org.htmlparser.nodefilter接口。这个接口只有一个主要函数:

boolean accept (node node);

各个子类分别实现这个函数,用于判定输入的node是否相符这个filter的过滤条件,假如相符,返回true,不然返回false。

(二)判定类filter

2.1 tagnamefilter

tabnamefilter是最轻易理解的一个filter,凭据tag的名字进行过滤。

下面是用于测试的html文件:

新灵感网站自动更新系统-www.xinlg.com

新灵感网站自动更新系统-www.xinlg.com

http://www.xinlg.com">新灵感网站自动更新系统-www.xinlg.com

新灵感网站自动更新系统-www.xinlg.com

测试源代码:(这里只列出了main函数,全部源代码请参考 htmlparser使用入门(2)- node内容,自己添加import局部)

public static void main(string[] args) {

try{

parser parser = new parser( (httpurlconnection) (new url("http://127.0.0.1:8080/htmlparsertester.html")).openconnection() );

// 这里是控制测试的局部,后面的例子修改的就是这个地方。

nodefilter filter = new tagnamefilter ("div");

nodelist nodes = parser.extractallnodesthatmatch(filter);

if(nodes!=null) {

for (int i = 0; i

新灵感网站自动更新系统-title-www.xinlg.com& lt;/head>

新灵感网站自动更新系统-字符串1-www.xinlg.com

http://www.xinlg.com">新灵感网站自动更新系统-链接文本-www.xinlg.com

新灵感网站自动更新系统-字符串2-www.xinlg.com

测试源代码:

nodefilter filter = new stringfilter("http://blog.csdn.net/javazhuanzai">www.xinlg.com");

nodelist nodes = parser.extractallnodesthatmatch(filter);

输出结果:

gettext:新灵感网站自动更新系统-title-www.xinlg.com

=================================================

gettext:

新灵感网站自动更新系统-字符串1-www.xinlg.com

=================================================

gettext:新灵感网站自动更新系统-链接文本-www.xinlg.com

=================================================

gettext:

新灵感网站自动更新系统-字符串2-www.xinlg.com

=================================================

可以看到包括title,两个内容字符串和链接的文本字符串的tag都被输出了,但是注释和链接tag自己没有输出。

4.3 linkstringfilter

这个filter用于判定链接中是否包括某个特定的字符串,可以用来过滤出指向某个特定网站的链接。

测试源代码:

nodefilter filter = new linkstringfilter("http://blog.csdn.net/javazhuanzai">www.xinlg.com");

nodelist nodes = parser.extractallnodesthatmatch(filter);

输出结果:

gettext:a href="http://blog.csdn.net/javazhuanzai">http://www.xinlg.com"

=================================================

4.4 其他几个filter

其他几个filter也是凭据字符串对差别的域进行判定,与前面这些的区别主要就是支持正则表达式。这个不在本文的讨论范畴以内,大众可以自己实验一下。

请各位站长看看下面>>>


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值