Htmlparser使用入门

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用Htmlparser生成Dom树

一.H tmlparser简介

什么是Htmlparser?顾名思义Htmlparser是一种解析分析提取Html 的工具。

如果想抓取网页的数据有什么办法,正则表达式?字符串截取?但是如果网站改版这些都将不好使用。

Htmlparser可以很好的对html标签进行操作。

?文本信息抽取,例如对html进行有效信息搜索

?链接提取,用于自动给页面的链接文本加上链接的标签

?资源提取,例如对一些图片、声音的资源的处理

这样如果使用Htmlparser将Html字符串生成Dom树就可以对Dom树进行操作,也不用担心网站改版,嘿嘿,是不是很方便?

二.H tmlparser生成Dom树

Htmlparser中的节点分为3种:TextNode,TagNode,RemarkNode。

(1)在生成Dom树时首先需要根据url获取Html字符串,如何获取Html 字符此处不在描述(在获取Html字符串时,如果解码方式不正确

将产生乱码)。

(2)新建一个XmlDocument对象,并添加根节点“root”。

(3)根据Html字符串生成一个parser对象(代码1),生成NodeFilter 对象filter(代码2)。

(4)根据parser对象的Parser(NodeFilter filter)方法可以获取到需要过滤的节点集合NodeList。

(5)接下来就可以使用递归向Xml添加Dom节点了。

循环NodeList,将节点转成ITag,判断ITag不为空并且ITag不

是结束标签(IsEndTag),将ITag的标签名称(TagName)添加在Xml

还可以设置节点的属性(style、with…),再判断ITag的子字节

点(Children)是否为空,如果不为空,判断ITag的FirstChild

是不是TextNode节点并且节点名称不是“script”、“style”,将

ITag的FirstChild文本ToPlainTextString添加在Xml节点上。

获取当前ITag的子节点(Children),如果不为空递归。接着判断

当前节点的下一个兄弟节点(NextSibling)是否为空,如果不为

空获取子节点递归。

到此Dom树已经生成。

附加代码:

代码一:

Parser parser = new Parser(new Winista.Text.HtmlParser.Lex.Lexer(new Winista.Text.HtmlParser.Lex.Page(htmlString)));

代码二:

NodeFilter filter = new

NodeClassFilter(typeof(Winista.Text.HtmlParser.Tags.Html));

Tags包含有大多数的HTML标签,如:Html、Body、Span、LinkTag……,如果只要简单的获取页面的所有连接,则直接Tags.LinkTag,然后NodeList

nodeList=parser。Parser(filter),循环nodeList就得到所有A标签。

如有侵权请联系告知删除,感谢你们的配合!

相关文档
最新文档