C# 使用HTML Agility Pack抓取元标记和注释

C# 使用HTML Agility Pack抓取元标记和注释,c#,.net,html-parsing,html-agility-pack,C#,.net,Html Parsing,Html Agility Pack,我一直在寻找关于使用HTML Agility Pack的教程,因为它似乎可以完成我希望它完成的所有事情,但对于这样一个强大的工具,它在互联网上几乎没有什么噪音 我正在编写一个简单的方法,它将根据名称检索任何给定的标记: public string[] GetTagsByName(string TagName, string Source) { ... } 使用正则表达式很容易做到这一点,但我们都知道使用正则表达式解析HTML是不对的。到目前为止,我有以下代码: ... // TODO:

我一直在寻找关于使用HTML Agility Pack的教程,因为它似乎可以完成我希望它完成的所有事情,但对于这样一个强大的工具,它在互联网上几乎没有什么噪音

我正在编写一个简单的方法,它将根据名称检索任何给定的标记:

public string[] GetTagsByName(string TagName, string Source) {
    ...
}
使用正则表达式很容易做到这一点,但我们都知道使用正则表达式解析HTML是不对的。到目前为止,我有以下代码:

...
// TODO: Clear Comments (can this be done or should I use RegEx?)
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(Source);
ArrayList tags = new ArrayList();
string xpath = "//" + TagName;
foreach (HtmlTextNode node in doc.DocumentNode.SelectNodes(xpath) {
    tags.Add(node.Text);
}
return (string[])tags.ToArray(typeof(String));
我希望能够首先剥离HTML中的所有注释,然后根据其名称返回正确的标记。如果可能的话,我还希望基于属性返回某些元标记,例如robot。我对xpath不是很在行,所以这方面的任何帮助都会很好


任何帮助都将不胜感激。

HtmlAgilityPack的HtmlDocument实现,因此它使用标准的.NET XPath引擎。任何XPath 1.0文档都是适用的,特别是当它谈到System.Xml.XPath时

“//comment()”查找所有注释
“//meta”查找所有“meta”元素

HtmlDocument的设计非常类似,因此有关它的示例和教程在某种程度上是适用的

一些MSDN链接:


不要忘记,HTML不要求用户拥有
元素。HTML注释通常是通过
完成的。我知道这些,并且我已经编写了一些基本的正则表达式来处理它,但是我更感兴趣的是获得一些关于使用HTML Agility pack完成此操作的信息。它的文档很糟糕!