HTML 敏捷包

Posted

技术标签:

【中文标题】HTML 敏捷包【英文标题】:HTML Agility Pack 【发布时间】:2010-12-25 10:34:47 【问题描述】:

我正在尝试使用 html Agility Pack 从以下内容中获取描述文本:

<meta name="description" content="**this is the text i want to extract and store in a string**" />

不久前 *** 上的某个人建议我使用 HTMLAgilityPack。但是我不知道怎么用,而且我找到的它的文档(包括下载中的文档)都有无效链接,因此无法查看文档。

有人可以帮我解决这个问题吗?

【问题讨论】:

我很困惑 - 你是否构建了 HtmlAgilityPack?是没有建立的例子吗?还是核心dll?如果是后者,你引用了什么? 谢谢马克。我已经编辑了我的问题并删除了该部分以避免进一步混淆。现在想来,那个特定的部分与我的问题并不真正相关,而是有一点信息来说明我为什么要问这个问题。 我已经能够在我的应用程序中添加对 dll 文件的引用。所以我可以“使用” htmlagility 包。 查看这个重复的问题:***.com/questions/846994/how-to-use-html-agility-pack 仅供参考(因为此问题作为GetAttributeValue 方法的第一个Google 结果出现),第二个参数是在未找到该属性时返回的默认值。以下是该方法的完整定义: /// /// 获取此节点属性值的辅助方法。如果没有找到该属性,则返回默认值。 /// /// 要获取的属性的名称。可能不是null。 /// 找不到时返回的默认值。 /// 的值态度 【参考方案1】:

用法和XmlDocument很相似;您可以在XmlDocument 上使用 MSDN 进行广泛的概述;您可能还想学习 xpath 语法 (MSDN)。

例子:

HtmlDocument doc = new HtmlDocument();
doc.Load(path); // or .LoadHtml(html);
HtmlNode node = doc.DocumentNode.SelectSingleNode("//meta[@name='description']");
if (node != null) 
    string desc = node.GetAttributeValue("content", "");
    // TODO: write desc somewhere

GetAttributeValue 的第二个参数是在找不到属性时返回的默认值。

【讨论】:

node.GetAttributeValue("content", ""); 中使用的第二个字符串参数(空的)是什么? @AlexW - 目前我没有“手头”这个库;参数叫什么? 不确定参数名称...稍后将按照定义路径查找。感谢您在这里的回答,v有用。 "def" 代表默认值。如果未找到该属性,则返回该值。在这里评论是因为这是谷歌搜索答案时的最佳结果。【参考方案2】:

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";
    


【讨论】:

以上是关于HTML 敏捷包的主要内容,如果未能解决你的问题,请参考以下文章

HTML 敏捷包

HTML 敏捷包选择节点

HTML 敏捷包,无法选择节点

Html 敏捷包 - 新的 HtmlAttribute

C# Html 敏捷包 ( SelectSingleNode )

HTML 敏捷包:解析 href 标签