好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Net C# 解析 HTML -- Html Agility Pack

Why Html Agility Pack? (以下简称HAP)

.Net下解析HTML文件有很多种选择,包括微软自己也提供MSHTML用于manipulate HTML文件。但是,经过我一段时间的搜索,Html Agility Pack浮出水面:它是Stackoverflow网站上推荐最多的C# HTML解析器。HAP开源,易用,解析速度快。


How to use HAP?


1. 右击项目,选择"Manage NuGet Packages"


2. 搜索HTMLAgilityPack


3. 在Visual Studio Solution里,右击project -> add reference -> 选择解压文件夹里的HTMLAgilityPack.dll -> 确定


4. 代码头部加入 using HtmlAgilityPack;


Done!


Quick Start:


HtmlWeb webClient = new HtmlWeb();

HtmlDocument doc = webClient.Load("http://xxx");


HtmlNodeCollection hrefList = doc.DocumentNode.SelectNodes(".//a[@href]");


if (hrefList != null)

{

     foreach (HtmlNode href in hrefList)

     {

        HtmlAttribute att = href.Attributes["href"];

        doSomething(att.Value);


     }


}

 以上代码示例load进来一个网页,提取所有的link(就是<a href=...></a>),遍历时提取出link的内容(href.Attributes["href"].Value)然后doSomething().


简介

本文介绍net处理html页面元素的工具类(HtmlAgilityPack.dll)的使用,用途比较多的应该是例如采集类的功能,采集到的html字符串要怎样处理是一个头痛的问题,如果是截取就太麻烦了而且容易出错。所有就用到本文的第三方dll来处理了。


下载

右击项目,选择"Manage NuGet Packages"


搜索:HtmlAgilityPack,之后安装就行了


使用

1.添加HtmlAgilityPack.dll引用(引用类using HtmlAgilityPack;)。


2.简单根据html中input的id获取value代码如下:


// 模拟用户请求

WebClient webClient = new WebClient();

webClient.Encoding = System.Text.Encoding.UTF8;

string htmlContext = webClient.DownloadString("http://stone_w.cnblogs.com/");

webClient.Credentials = CredentialCache.DefaultCredentials; // 添加授权证书

webClient.Headers.Add("User-Agent", "Microsoft Internet Explorer");

webClient.Headers.Add("Host", "www.cnblogs.com");


// 获取html元素(htmlContext为html页面字符串)

HtmlDocument htmlDoc = new HtmlDocument();

htmlDoc.LoadHtml(htmlContext);  // 加载html页面

HtmlNode navNode = htmlDoc.GetElementbyId("id名称");

Response.Write(navNode.Attributes["value"].Value);

总结

HtmlAgilityPack可以根据id查询value,还可以获取单个元素节点,都是HtmlDocument类的内置方法,大家可以试着练练。

————————————————

版权声明:本文为CSDN博主「biyusr」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/biyusr/article/details/125968749

查看更多关于Net C# 解析 HTML -- Html Agility Pack的详细内容...

  阅读:61次