1

我正在尝试提取具有特定类/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”时,一切正常,我可以选择我选择的带有 class/id 定义的表。

我究竟做错了什么?


4

2 回答 2

1

在取消引用之前尝试检查 Attribute 是否存在:

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;
于 2012-06-12T22:19:26.860 回答
0

您可以使用 XPath 按类(或如果需要,按 Id)选择 div。

var results = document.DocumentNode.SelectNodes("//div[@class='content']");
于 2012-06-12T22:20:19.780 回答