Ich muss eine Liste der Datensätze auf einer bestimmten Webseite erstellen. Ich habe die Seitenquelle in einer Textdatei gespeichert. Ich muss diesen Knoten Element für Element durchqueren:
HtmlNodeCollection resultContainer = doc.DocumentNode.SelectNodes("//div[@class='result-list divider-y-5']");
Für jedes Element muss ich den Typ (div, span usw.) überprüfen, es ist "id" und es sind "class" -Attribute, um meine Liste von Datensätzen erstellen zu können. Ich möchte keine Sammlung aller s oder s. Das hilft nicht, weil ich nicht weiß, welcher Art von Element ich beim Durchlaufen begegnen werde. Ich muss sie alle überprüfen. Weil alle Daten, die ich brauche, Kinder der oben erwähnten Knotensammlung sind. Irgendwelche Vorschläge?
foreach(HtmlNode node in resultContainer)
{
//check node type
switch(node.Name)
{
case "div":
{
break;
}
case "p":
{
}
///....etc
}
//get id
String id = node.Attributes["id"].Value;
//get class
String class = node.Attributes["class"].Value;
}
Ich denke, es ist einfacher, das HtmlAgilityPack das HTML-Dokument in XML konvertieren zu lassen, zB:
doc.Load(htmlStream, true);
doc.OptionOutputAsXml = true;
doc.OptionFixNestedTags = true;
doc.OptionAutoCloseOnEnd = true;
doc.Save(/* your Xml stream or filename */);
Verwenden Sie dann die reguläre .NET-XML-API (z. B. mit XmlDocument oder XDocument), um den Inhalt zu verarbeiten.