Ich versuche, alles, was in einem Div liegt, mit einem bestimmten Klassen- / ID-Namen zu extrahieren. Ich verwende den folgenden Code:
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);
}
Ich erhalte eine Fehlermeldung "NullReferenceException wurde nicht behandelt - Objektreferenz nicht auf eine Instanz eines Objekts festgelegt" .
Anscheinend findet es das Div überhaupt nicht. Wenn ich "table" anstelle von "div" in die Descendants () Methode setze, funktioniert alles und ich kann eine Tabelle meiner Wahl mit der class / id Definition auswählen.
Was mache ich falsch?
Überprüfen Sie, ob das Attribut vorhanden ist, bevor Sie es dereferenzieren:
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;
Sie können XPath verwenden, um das div nach Klasse (oder bei Bedarf nach Id) auszuwählen.
var results = document.DocumentNode.SelectNodes("//div[@class='content']");