2010-03-01 65 views
3

我已經找了關於使用HTML敏捷包的教程,因爲它似乎做我想做的所有事情,但似乎對於這樣一個強大的工具,它幾乎沒有什麼噪音在網上。使用HTML敏捷包抓取元標籤和註釋

我寫一個簡單的方法,將基於名稱檢索任何給定的標記:在使用正則表達式解析HTML不

public string[] GetTagsByName(string TagName, string Source) { 
    ... 
} 

這可以使用正則表達式很容易做到,但我們都知道對。到目前爲止,我有以下代碼:

... 
// 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不太好,所以任何幫助都會很好。

任何幫助將不勝感激。

+0

不要忘記一個事實,即HTML並不需要用戶有一個''或'元素。而HTML註釋通常使用'<! - comment - >'完成。 – Kolky 2010-03-01 09:55:34

+0

我意識到這些,並且我已經編寫了一些基本的正則表達式來處理它,但我更感興趣的是獲取有關使用HTML Agility包執行此操作的一些信息。它的文檔是可悲的! – AlexT 2010-03-01 11:59:02

回答

10

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

「//評論()」找到所有評論
「//元」查找所有「元」元素

的HTMLDocument被設計看起來非常像XmlDocument,所以關於它的例子和教程將會有所適用。

某些MSDN鏈接: