HtmlAgilityPack.dll的使用 获取HTMLid

简介

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

 

下载

下载地址:http://htmlagilitypack.codeplex.com/

点击“download”按钮直接下载。

 

使用

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

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

HtmlAgilityPack.dll的使用 获取HTMLid
HtmlAgilityPack.dll的使用 获取HTMLid
// 模拟用户请求
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.dll的使用 获取HTMLid
HtmlAgilityPack.dll的使用 获取HTMLid

 

总结

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

获取超级链接

HtmlAgilityPack.dll的使用 获取HTMLid
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);

     }

}
HtmlAgilityPack.dll的使用 获取HTMLid

搜集到的第三个 

这里推荐一个不错的DLL 叫HtmlAgilityPack.dll,它不基于mshtml,轻松解析HTML代码,这对做采集软件来说是很不错的选择,使用非常简单:


--------------------------------------------------------------------------------

     Dim wc As WebClient = New WebClient
            Dim ms As MemoryStream = New MemoryStream(wc.DownloadData(url))
            ‘预读HTML
            Dim hdoc As HtmlDocument = New HtmlDocument
            hdoc.Load(ms, Encoding.UTF8)

            ‘股票编号
            arr(0) = hdoc.DocumentNode.SelectSingleNode("/html[1]/body[1]/div[1]/div[1]/div[3]/div[2]/div[1]/div[1]").InnerText 


--------------------------------------------------------------------------------


其中 /html[1]/body[1]/div[1]/div[1]/div[3]/div[2]/div[1]/div[1] 是你要采集的xPath,这个有点像DOMhtml,HtmlAgilityPack 也提供了相应的工具软件来获取这个值,但似乎开发者似乎不怎么了解winform,软件容易崩溃...

HtmlAgilityPack.dll的使用 获取HTMLid

上一篇:HTML WEB 和HTML Agility Pack结合


下一篇:easyjweb ejs 2014.2.25