如何使用HTML Agility Pack
我如何使用HTML Agility Pack?
我的XHTML文档不完全有效。 这就是我为什么要使用它的原因。 我如何在我的项目中使用它? 我的项目是在C#中。
首先,将HTMLAgilityPack nuget包安装到您的项目中。
然后,举个例子:
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框架中的其他面向流的类集成时非常有用。 而HtmlEntity.DeEntitize()
是正确处理html实体的另一种有用方法。 (感谢马修)
HtmlDocument
和HtmlNode
是你最HtmlNode
的类。 与XML解析器类似,它提供了接受XPath表达式的selectSingleNode和selectNodes方法。
注意HtmlDocument.Option??????
布尔属性。 这些控制Load
和LoadXML
方法如何处理HTML / XHTML。
还有一个名为HtmlAgilityPack.chm的编译的帮助文件,它具有每个对象的完整参考。 这通常位于解决方案的基础文件夹中。
我不知道这对你是否有任何帮助,但我写了几篇介绍基础知识的文章。
下一篇文章完成了95%,我只需要写下我写的代码的最后几部分的解释。 如果你有兴趣,那么我会尽量记住我发布时在这里发布。
HtmlAgilityPack使用XPath语法,尽管很多人认为它的记录不完善,但在使用此XPath文档的帮助下使用它并不困难:https://www.w3schools.com/xml/xpath_syntax.asp
解析
<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);
}
链接地址: http://www.djcxy.com/p/83345.html
上一篇: How to use HTML Agility pack
下一篇: Javascript: How to detect if browser window is scrolled to bottom?