Anwendungsfall

I. Umgebung einrichten

1. Referenzierung

Zwei gängige Vorgehensweisen:

  1. Alte Variante: Manuelles Einbinden von HtmlAgilityPack.dll
  2. Empfohlene Variante: Installation über das NuGet‑Paket
Install-Package HtmlAgilityPack
2. Wichtige Kernklassen
KlassennameBeschreibung
HtmlDocumentHTML‑Dokumentcontainer, lädt den HTML‑Quelltext
HtmlWebKlasse für Netzwerkanfragen, holt HTML‑Inhalt direkt von einer URL
HtmlNodeEinzelner HTML‑DOM‑Knoten (div/a/p und weitere Tags)
HtmlNodeCollectionSammlung von HtmlNode‑Objekten für mehrere Abfrageergebnisse

II. Zwei Varianten zum Laden von HTML

Beide Varianten liefern am Ende ein HtmlDocument‑Objekt zurück

1: Lokale Datei / HTML‑String laden
  1. Lokale HTML‑Datei laden
using HtmlAgilityPack;
using System.Text;

HtmlDocument document = new HtmlDocument();
// Lokale Datei mit angegebener Kodierung laden
document.Load("news.htm", Encoding.UTF8);Code-Sprache: JavaScript (javascript)
  1. HTML‑Textstring laden
string htmlStr = "<html>...</html>";
document.LoadHtml(htmlStr);Code-Sprache: HTML, XML (xml)
2: Webseite online laden
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://example.com");Code-Sprache: JavaScript (javascript)

III. Knoten abfragen

// 1. Dokument‑Objekt erstellen
HtmlDocument document = new HtmlDocument();
// 2. Lokale HTML‑Datei einlesen
document.Load("news.htm", Encoding.UTF8);
// 3. Wurzelknoten des Dokuments holen
HtmlNode rootNode = document.DocumentNode;
// 4. Mehrere Knoten per XPath abfragen, gibt Knotensammlung zurück
HtmlNodeCollection newsList = rootNode.SelectNodes(
    @"//html/body/div[@class='content']/div/div[@class='left']/div[1]/div[@class='blk12']/div[@class='blk122']/a"
);Code-Sprache: JavaScript (javascript)

Wichtige Methoden im Überblick

  • SelectSingleNode("XPath"):liefert den ersten passenden Knoten, Rückgabetyp HtmlNode
  • SelectNodes("XPath"):liefert alle passenden Knoten, Rückgabetyp HtmlNodeCollection
  • Lehrmaterial nutzt vollständige absolute Pfade. In der Praxis empfiehlt sich die globale relative Suche, um XPath zu vereinfachen und Ausfälle bei Seitenänderungen zu vermeiden:
//div[@class='blk122']/aCode-Sprache: JSON / JSON mit Kommentaren (json)

IV. Beispiel: Durchlaufen und Inhalte auslesen

if(newsList != null)
{
    foreach(HtmlNode aNode in newsList)
    {
        string title = aNode.InnerText;          // Text innerhalb des Tags ermitteln
        string link  = aNode.GetAttributeValue("href",""); // href‑Attribut auslesen
    }
}Code-Sprache: PHP (php)

V. Übersicht wichtiger Eigenschaften

  • .InnerText:Reintext‑Inhalt innerhalb des Elements
  • .InnerHtml:Innerer HTML‑Quelltext inklusive Kind‑Tags
  • .OuterHtml:Aktuelles Tag samt vollständigem inneren HTML‑Markup
  • GetAttributeValue("Attributname","Standardwert"):Sicheres Auslesen von Tag‑Attributen

Anwendungsfall

Schreibe einen Kommentar

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