使用HTML Agility Pack抓取元標記和註釋

.net c# html-agility-pack html-parsing

我一直在尋找使用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中刪除所有註釋,然後根據其名稱返回正確的標記。如果可能的話,我還想根據屬性返回某些元標記,例如機器人。我對xpath不太好,所以任何幫助都會很好。

任何幫助將非常感激。

一般承認的答案

HtmlAgilityPack的HtmlDocument實現了IXpathNavigable ,因此它使用標準的.NET XPath引擎。任何XPath 1.0文檔都適用,特別是如果它涉及System.Xml.XPath。

“// comment()”查找所有評論
“// meta”找到所有“元”元素

HtmlDocument的設計看起來非常像XmlDocument ,因此有關它的示例和教程將在某種程度上適用。

一些MSDN鏈接:



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因