Dokumentinhalt abrufen

Dokument‑Objekt abrufen

1. Dokument‑Objekt erstellen

HtmlDocument document = new HtmlDocument();Code-Sprache: JavaScript (javascript)

2. Zwei Lademöglichkeiten

1)HTML‑String laden

document.LoadHtml(htmlString);Code-Sprache: JavaScript (javascript)

2)Lokale HTML‑Datei laden (Kodierung festlegen, um Zeichenfehler zu vermeiden)

document.Load(@"c:/news.html", Encoding.UTF8);Code-Sprache: JavaScript (javascript)

Bei Windows‑Pfaden empfehlt sich das Zeichen @ zum Deaktivieren der Escape‑Verarbeitung. c://news.html im Lehrmaterial ist nur ein Syntaxbeispiel.

3. Wurzelknoten erhalten

HtmlNode rootNode = document.DocumentNode;Code-Sprache: JavaScript (javascript)

Alle XPath‑Abfragen werden auf Basis von rootNode ausgeführt.

Knoten‑Operationen

1. Neuen Knoten aus Knoten‑HTML erzeugen

HtmlNode newNode = HtmlNode.CreateNode(newsNode.OuterHtml);
  • OuterHtml: Enthält das eigene Tag sowie den gesamten internen HTML‑Inhalt
  • Wird oft zum Kopieren von Knoten oder zum separaten Auswerten von HTML‑Ausschnitten verwendet

2. Knoten abfragen

  • SelectSingleNode("XPath"): Gibt den ersten passenden Knoten zurück, Rückgabetyp HtmlNode
HtmlNode childNode = itemNode.SelectSingleNode("//div[1]");Code-Sprache: JavaScript (javascript)
  • SelectNodes("XPath"): Gibt alle passenden Knoten zurück, Rückgabetyp HtmlNodeCollection

3. Text und Attribute auslesen

  1. Reinen Text innerhalb eines Knotens auslesen
string text = itemNode.InnerText;
  1. Tag‑Attribut abrufen (einfache Schreibweise)
string href = itemNode.Attributes["href"].Value;Code-Sprache: JavaScript (javascript)

Risiko: Fehlt das Attribut href am Tag, liefert der direkte Zugriff Attributes["href"] null und löst einen Programmfehler aus.

Empfohlene sichere Schreibweise:

string href = itemNode.GetAttributeValue("href", "");Code-Sprache: JavaScript (javascript)

4. Vollständiges Beispiel: Nachrichtenliste durchlaufen

foreach (HtmlNode item in newsList)
{
    string title = item.InnerText;
    string href = item.Attributes["href"].Value;
}Code-Sprache: PHP (php)

Zusätzliche Hinweise

  1. Umgang mit Null‑Werten
    SelectNodes() gibt null zurück, wenn keine Knoten gefunden werden. Vor einer foreach‑Schleife ist eine Prüfung zwingend erforderlich:
if(newsList != null)
{
    foreach(var item in newsList){ ... }
}Code-Sprache: PHP (php)
  1. Unterschied InnerText / InnerHtml / OuterHtml
  • InnerText: Extrahiert nur Textinhalt, entfernt sämtliche Tags
  • InnerHtml: HTML‑Inhalt innerhalb des Knotens, ohne das eigene Tag
  • OuterHtml: Eigenes Tag plus den gesamten internen HTML‑Inhalt
  1. Kleiner XPath‑Tipp
    //div sucht global nach allen div‑Elementen; ohne // werden nur direkte Kindknoten abgeglichen.

Vollständiges Code‑Beispiel

using HtmlAgilityPack;
using System.Text;

//1.Dokument initialisieren
HtmlDocument document = new HtmlDocument();
document.Load("news.htm", Encoding.UTF8);
HtmlNode rootNode = document.DocumentNode;

//2.Massenabfrage von Nachrichten‑Links
HtmlNodeCollection newsList = rootNode.SelectNodes(@"//div[@class='blk122']/a");

if(newsList != null)
{
    foreach (HtmlNode item in newsList)
    {
        string title = item.InnerText.Trim();
        string link = item.GetAttributeValue("href", "");
        Console.WriteLine($"Titel: {title} Link: {link}");
    }
}Code-Sprache: JavaScript (javascript)

Dokumentinhalt abrufen

Previous:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert