HTML Agility Pack問題查找div

c# html-agility-pack

我正在嘗試提取具有某個類/ id名稱的div中的所有內容。我正在使用以下代碼:

var webGet = new HtmlWeb();
var document = webGet.Load("http://www.4guysfromrolla.com/articles/011211-1.aspx");

var partOfWebpage = from completeWebpage in document.DocumentNode.Descendants("div")
                             where
                                 completeWebpage.Attributes["class"].Value == "content" &&
                                 completeWebpage.Attributes["class"].Value != null
                             select completeWebpage.InnerHtml;

foreach (var s in partOfWebpage)
{
    textBox1.AppendText(s);
}

我收到“NullReferenceException未處理 - 對象引用未設置為對象的實例”錯誤。

顯然它根本找不到div。當我在Descendants()方法中放入“table”而不是“div”時,everthing工作得很好,我可以用class / id定義選擇一個我選擇的表。

我究竟做錯了什麼?


一般承認的答案

在解除引用之前,請嘗試檢查屬性是否存在:

from completeHomepage in document.DocumentNode.Descendants("div")
where completeHomepage.Attributes["class"] != null &&
      completeHomepage.Attributes["class"].Value == "content" &&
      completeHomepage.Attributes["class"].Value != null
select completeHomepage.InnerHtml;

熱門答案

您可以使用XPath按類選擇div(如果需要,可以使用Id)。

var results = document.DocumentNode.SelectNodes("//div[@class='content']");



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