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 结果出现),第二个参数是在未找到该属性时返回的默认值。以下是该方法的完整定义: /// 用法和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 敏捷包的主要内容,如果未能解决你的问题,请参考以下文章