转自: http://blog.csdn.net/flying881114/article/details/6609546
http://www.cnblogs.com/stone_w/archive/2012/09/25/2701869.html
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类的内置方法,大家可以试着练练。谢谢完~