Htmlparser使用入门
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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标签。
如有侵权请联系告知删除,感谢你们的配合!