【C#】获取网页内容及HTML解析器HtmlAgilityPack的使用

时间:2024-01-17 23:02:26

最近经常需要下载一些东西,而这个下载地址又会经过层层跳转,每个页面上都有很多广告,烦不胜烦,所以做了一个一键获得最终下载地址的小工具。使用C#,来获取网页内容,然后通过HtmlAgilityPack获取某a标签的href,不断循环,层层跳转,最后获得最终下载地址。

下面,介绍HtmlAgilityPack的使用方法,这个方法也是从网上很多篇文章中拼凑摸索出来的,因为找了一大圈根本找不到HtmlAgilityPack的文档……

首先,using HtmlAgilityPack;

代码片段:

string url = "http://www.baidu.com/";
HtmlWeb htmlweb = new HtmlWeb();
HtmlDocument htmldoc = htmlweb.Load(url);
HtmlNodeCollection hnc = htmldoc.DocumentNode.SelectNodes("//div[@class='s_btn_wr']//input[@class='s_btn']");
string text = hnc[hnc.Count - 1].Attributes["value"].Value;

要点:

htmlweb.Load:参数为url地址,功能是加载url页面内容到htmldoc这个对象中。

HtmlNodeCollection:是一个集合,包含多个节点,它有count属性,可以获取数量,获取最后一个节点使用hnc[hnc.Count - 1]。

htmldoc.DocumentNode.SelectNodes:选择所有匹配的节点,参数为XPath语法,可以搜索W3CShool的语法说明,我这里的意思是获取包含class等于s_btn_wr的div下面的class等于s_btn的input节点。

hnc[hnc.Count - 1].Attributes["value"].Value:获取最后一个节点的value的属性值。

基本了解了上面的内容之后,我想你已经基本能够完成你想做的功能了。

转载请注明出处,原文链接:http://fengyu.name/?cat=coding&id=294