首页 > C# > c#如何使用 HTML Agility Pack?

c#如何使用 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
        }
    }
}

(注意:此代码只是一个示例,不一定是最佳/唯一的方法。不要在您自己的应用程序中盲目使用它。

该方法还接受流,这对于与 .NET Framework 中其他面向流的类集成非常有用。while 是正确处理 html 实体的另一种有用方法。(感谢马修)HtmlDocument.Load()HtmlEntity.DeEntitize()

HtmlDocument并且是您最常使用的类。与 XML 解析器类似,它提供接受 XPath 表达式的 selectSingleNode 和 selectNodes 方法。HtmlNode

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

还有一个名为 HtmlAgilityPack.chm 的编译帮助文件,其中包含每个对象的完整参考。这通常位于解决方案的基文件夹中。

分割线

网友回答:

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

  • HtmlAgilityPack 文章系列
  • HtmlAgilityPack 库简介
  • 使用HtmlAgilityPack轻松地从html片段中提取链接

下一篇文章已经完成了 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);
}

模板简介:该模板名称为【c#如何使用 HTML Agility Pack?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【C#】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 363次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 04-14
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
单页式简历模板 微信图片 企业网站 html5 微信素材 微信文章 自适应 响应式 微信公众平台 微信模板
您可能会喜欢的其他模板