发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
HtmlAgilityPack是一个基于.Net的、第三 方免费开源的微型类库,主要用于在服务器端解析html文档(在B/S结构的程序中客户端可以用Javascript解析html)。截止到本文发表 时,HtmlAgilityPack的最新版本为1.4.0。下载地址:http://htmlagilitypack./
下载后解压缩后有3个文件,这里只需要将其中的HtmlAgilityPack.dll(程序集)、 HtmlAgilityPack.xml(文档,用于Visual Studio 2008中代码智能提示和帮助说明之用)引入解决方案中即可使用,无需安装任何东西,非常“绿色环保”。
在C#类文件开头引入using HtmlAgilityPack;就可以使用该命名空间下的类型了。实际使用中,几乎都是以HtmlDocument类为主线的,这一点非常类似于微 软.net framework中的XmlDocument类。XmlDocument类是操作的是xml文档,而HtmlDocument类操作的是html文档 (其实也可以操作xml文档),它们的操作方式都是基于Dom,所不同的是后者取消了诸如GetElementsByTagName这样的方法,强化了 GetElementById方法(在HtmlDocument中可以直接使用,而XmlDocument则不可以)。HtmlAgilityPack中 定位节点基本上都用Xpath表达式,Xpath表达式的参考文档可见:http://www.w3school.com.cn/xpath/xpath_syntax.asp
例如,我们要采集博客园首页推荐文章的标题,在ASP.NET中可以编写如下代码:
这段代码将采集到的首页html静态文本解析成Dom节点树,然后用Xpath表达式获取整个文档中class属性值为titlelnk的 所有a元素。获取节点最常用节点对象的两个方法:SelectNodes("xpath表达式")和SelectSingleNode("xpath表达 式"),前者返回节点集合HtmlNodeCollection的一个实例;后者返回满足条件的第一个节点,类型为HtmlNode的一个实例。后面的 Foreach循环输出每个a元素的内联文本。
通常情况下,HtmlAgilityPack比正则表达式解析html更加高效准确,这体现在开发效率和运行性能两方 面。HtmlAgilityPack的灵活性也是非常好的。例如将上面代码中的foreach循环体改成 Response.Write(anchor.OuterHtml + "<br/>");则输出的是超链接本身而非内联文本。甚至可以修改超链接本身:
这样运行后你看到的是红色的超链接。你可以几乎随心所欲地对HtmlAgilityPack解析生成的Dom节点树上的节点操作,就像你拥有一颗 自己的圣诞树,可以随意对其修整剪裁。这也是正则方法无法相提并论的。HtmlAgilityPack对源文本的结构要求非常宽松,即使没有根元素也一样 正常使用,这同要求非常严格的XmlDocument完全不同。熟练掌握HtmlAgilityPack解析html文档的关键在于熟悉Xpath表达式 语法,好在Xpath的语法入门比较简单,只需花费数个小时基本就可满足大部分应用。依托于Dom高效而通用的结构,Xpath强大而简练的语 法,HtmlAgilityPack真可以称为“解析html和采集网页的神兵利器”。
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
.NET Core HtmlAgilityPack HTML解析利器
NET Core HtmlAgilityPack HTML解析利器。发现HtmlAgilityPack 没法进行引用,遂自己做了些修改,可以运行在 .NET Core 中。NET Core版 ...
别在迷恋正则表达式解析html了,好吗?
..:选取当前节点的父节点。< Article ></ Article >针对上面的XML文件,我们列出了带有谓语的一些路径表达式,以及表达式的...
C# 实现网络爬虫
1 private string GetHtml(string Url) //:Url="http://www.cppi.cn";HtmlAgilityPack是.net下的一个HTML解析类库,具体使用详...
Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结
Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结。前几天小编连续写了四篇关于Python选择器的文章,分别用正则表达式、Be...
向HtmlAgilityPack道歉:解析HTML还是你好用
解释:HtmlAgilityPack是使用XPath语法,"//comment()"在XPath中表示“所有注释节点”,关于XPath的详细用法请参考XPath的资...
xPath和html基础扫盲
xPath和html基础扫盲。xPath:一种HTML和XML的查询语言,他能在XML和HTML的树状结构中寻找节点。安装xPath:pip方法: pip install lxml.此时可以看到xml已经安装完成。HTML:一种网页的标准、规范。...
古代神兵利器
古代神兵利器。
VB.NET 用HtmlAgilityPack解析百度文库,获取百度文库中的内容(以富甲美国为例)
VB.NET 用HtmlAgilityPack解析百度文库,获取百度文库中的内容(以富甲美国为例)2.获取一篇百度文库文章word/pdf格式等都可以(以<富甲...
HTML直通车:怎么操作出来的网页不一般,大神都是这样做的
HTML直通车:怎么操作出来的网页不一般,大神都是这样做的。
微信扫码,在手机上查看选中内容