我正在尝试提取位于具有特定类/ 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定义选择一个我选择的表。
我做错了什么?
答案 0 :(得分:1)
在解除引用之前,请尝试检查属性是否存在:
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;
答案 1 :(得分:0)
您可以使用XPath按类选择div(如果需要,可以使用Id)。
var results = document.DocumentNode.SelectNodes("//div[@class='content']");