如何使用HTML敏捷包

我如何使用HTML敏捷包 ?

我的XHTML文档不完全有效。 这就是为什么我想要使用它。 我如何在我的项目中使用它? 我的项目是在C#中。

  1. 下载并构buildHTMLAgilityPack解决scheme。

  2. 在您的应用程序中,在HTMLAgilityPack \ Debug(或Realease)\ bin文件夹中添加对HTMLAgilityPack.dll的引用。

然后,举个例子:

 HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); // There are various options, set as needed htmlDoc.OptionFixNestedTags=true; // filePath is a path to a file containing the html htmlDoc.Load(filePath); // Use: htmlDoc.LoadHtml(xmlString); to load from a string (was htmlDoc.LoadXML(xmlString) // ParseErrors is an ArrayList containing any errors from the Load statement if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0) { // Handle any parse errors as required } else { if (htmlDoc.DocumentNode != null) { HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body"); if (bodyNode != null) { // Do something with bodyNode } } } 

(注意:这个代码只是一个例子,不一定是最好的/唯一的方法,不要在你自己的应用程序中盲目地使用它。)

HtmlDocument.Load()方法也接受一个在.NET框架中与其他面向stream的类集成非常有用的stream。 而HtmlEntity.DeEntitize()是正确处理html实体的另一个有用的方法。 (感谢马修)

HtmlDocumentHtmlNode是你最HtmlNode的类。 与XMLparsing器类似,它提供了接受XPathexpression式的selectSingleNode和selectNodes方法。

注意HtmlDocument.Option?????? 布尔属性。 这些控制着LoadLoadXML方法如何处理你的HTML / XHTML。

还有一个名为HtmlAgilityPack.chm的编译的帮助文件,它具有每个对象的完整参考。 这通常在解决scheme的基础文件夹中。

我不知道这对你是否有任何帮助,但是我写了几篇介绍基础知识的文章。

  • HtmlAgilityPack文章系列
  • HtmlAgilityPack图书馆简介
  • 使用HtmlAgilityPack轻松地从html代码片段中提取链接

下一篇文章已经完成了95%,我只需要写下我写的代码的最后几部分的解释。 如果你有兴趣,那么我会尽量记住,当我发布它。

HtmlAgilityPack使用XPath语法,尽pipe很多人认为它的文档logging很糟糕,但在使用XPath文档的帮助下,我毫不费力地使用它: http://www.w3schools.com/xml/xpath_syntax.asp

parsing

 <h2> <a href="">Jack</a> </h2> <ul> <li class="tel"> <a href="">81 75 53 60</a> </li> </ul> <h2> <a href="">Roy</a> </h2> <ul> <li class="tel"> <a href="">44 52 16 87</a> </li> </ul> 

我做到了这一点:

 string url = "http://website.com"; var Webget = new HtmlWeb(); var doc = Webget.Load(url); foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//h2//a")) { names.Add(node.ChildNodes[0].InnerHtml); } foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//li[@class='tel']//a")) { phones.Add(node.ChildNodes[0].InnerHtml); } 
  public string HtmlAgi(string url, string key) { var Webget = new HtmlWeb(); var doc = Webget.Load(url); HtmlNode ourNode = doc.DocumentNode.SelectSingleNode(string.Format("//meta[@name='{0}']", key)); if (ourNode != null) { return ourNode.GetAttributeValue("content", ""); } else { return "not fount"; } } 

主要的HTMLAgilityPack相关代码如下

 using System; using System.Net; using System.Web; using System.Web.Services; using System.Web.Script.Services; using System.Text.RegularExpressions; using HtmlAgilityPack; namespace GetMetaData { /// <summary> /// Summary description for MetaDataWebService /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. [System.Web.Script.Services.ScriptService] public class MetaDataWebService: System.Web.Services.WebService { [WebMethod] [ScriptMethod(UseHttpGet = false)] public MetaData GetMetaData(string url) { MetaData objMetaData = new MetaData(); //Get Title WebClient client = new WebClient(); string sourceUrl = client.DownloadString(url); objMetaData.PageTitle = Regex.Match(sourceUrl, @ "\<title\b[^>]*\>\s*(?<Title>[\s\S]*?)\</title\>", RegexOptions.IgnoreCase).Groups["Title"].Value; //Method to get Meta Tags objMetaData.MetaDescription = GetMetaDescription(url); return objMetaData; } private string GetMetaDescription(string url) { string description = string.Empty; //Get Meta Tags var webGet = new HtmlWeb(); var document = webGet.Load(url); var metaTags = document.DocumentNode.SelectNodes("//meta"); if (metaTags != null) { foreach(var tag in metaTags) { if (tag.Attributes["name"] != null && tag.Attributes["content"] != null && tag.Attributes["name"].Value.ToLower() == "description") { description = tag.Attributes["content"].Value; } } } else { description = string.Empty; } return description; } } } 

入门 – HTML敏捷包

 // From File var doc = new HtmlDocument(); doc.Load(filePath); // From String var doc = new HtmlDocument(); doc.LoadHtml(html); // From Web var url = "http://html-agility-pack.net/"; var web = new HtmlWeb(); var doc = web.Load(url);