I. Umgebung einrichten
1. Referenzierung
Zwei gängige Vorgehensweisen:
- Alte Variante: Manuelles Einbinden von
HtmlAgilityPack.dll - Empfohlene Variante: Installation über das NuGet‑Paket
Install-Package HtmlAgilityPack
2. Wichtige Kernklassen
| Klassenname | Beschreibung |
|---|---|
HtmlDocument | HTML‑Dokumentcontainer, lädt den HTML‑Quelltext |
HtmlWeb | Klasse für Netzwerkanfragen, holt HTML‑Inhalt direkt von einer URL |
HtmlNode | Einzelner HTML‑DOM‑Knoten (div/a/p und weitere Tags) |
HtmlNodeCollection | Sammlung 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
- 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)
- 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ückgabetypHtmlNodeSelectNodes("XPath"):liefert alle passenden Knoten, RückgabetypHtmlNodeCollection- 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‑MarkupGetAttributeValue("Attributname","Standardwert"):Sicheres Auslesen von Tag‑Attributen
Anwendungsfall
Previous: XPath
Next: Dokumentinhalt abrufen