HtmlAgilityPack für C# (.NET): Komplettguide mit Beispielen
1. Was ist HtmlAgilityPack und wofür braucht man es?
HtmlAgilityPack ist eine leistungsstarke Bibliothek zum Parsen von HTML-Dokumenten im .NET-Ökosystem (C#, VB.NET, F#). Sie bietet Entwicklern eine komfortable API zum Navigieren, Suchen, Extrahieren und Modifizieren von HTML-Code. Im Gegensatz zu standardmäßigen XML-Parsern wurde HtmlAgilityPack speziell für die Arbeit mit "schmutzigem" HTML entwickelt, das im echten Web häufig vorkommt: nicht geschlossene Tags, fehlerhafte Attribute, verschachtelte Fehler usw. Die Bibliothek korrigiert solche Defekte automatisch und erstellt einen korrekten DOM-Baum.
Wofür wird es benötigt? Zu den wichtigsten Anwendungsfällen gehören: Web Scraping (Datenextraktion von Websites), Automatisierung von Web-Tests, Content-Migration zwischen CMS-Systemen, Analyse von HTML-Berichten, Bereinigung und Normalisierung von HTML-Code sowie die Erstellung eigener HTML-Generatoren. Dank der Unterstützung von XPath und CSS-Selektoren (über eine Erweiterung) können Sie flexibel und präzise die gewünschten Elemente auswählen.
HtmlAgilityPack wird von der Community aktiv unterstützt, ist Open Source und kompatibel mit .NET Framework 4.5+, .NET Core 2.0+, .NET 5/6/7/8 sowie mit Xamarin und Unity. Das macht es zu einem universellen Werkzeug für jeden .NET-Entwickler, der mit HTML arbeitet.
2. Installation
Die Installation der Bibliothek erfolgt über den NuGet Package Manager. Führen Sie einen der folgenden Befehle in der Package Manager Console oder im .NET CLI-Terminal aus:
// Über .NET CLI
dotnet add package HtmlAgilityPack
// Über Package Manager Console
Install-Package HtmlAgilityPack
// Oder über die NuGet-Oberfläche: Nach "HtmlAgilityPack" suchen und die neueste stabile Version installieren
Fügen Sie nach der Installation die using-Direktive am Anfang Ihrer Datei hinzu:
using HtmlAgilityPack;
3. Schnellstart – Minimales Arbeitsbeispiel
Betrachten wir ein einfaches Beispiel: Wir laden einen HTML-String, finden alle Links und geben deren Text und URL aus.
using System;
using HtmlAgilityPack;
class Program
{
static void Main()
{
// 1. HTML-Dokument erstellen
var htmlDoc = new HtmlDocument();
// 2. HTML laden (in der Praxis könnte es aus einer Datei oder dem Web stammen)
string html = @"
";
htmlDoc.LoadHtml(html);
// 3. Alle <a>-Tags mit XPath auswählen
var links = htmlDoc.DocumentNode.SelectNodes("//a");
// 4. Jeden Link durchgehen und Text sowie href ausgeben
if (links != null)
{
foreach (var link in links)
{
string text = link.InnerText.Trim();
string href = link.GetAttributeValue("href", "");
Console.WriteLine($"Text: {text}, URL: {href}");
}
}
}
}
Ergebnis der Ausführung:
Text: Example, URL: https://example.com
Text: PythonLib, URL: https://pythonlib.ru
4. Wichtige Klassen und Methoden
Im Folgenden werden die wichtigsten Klassen und Methoden von HtmlAgilityPack mit detaillierten Beschreibungen und Beispielen vorgestellt.
4.1. HtmlDocument – Die Hauptklasse für die Arbeit mit Dokumenten
Signatur: public class HtmlDocument
Beschreibung: Stellt ein vollständiges HTML-Dokument dar. Ermöglicht das Laden von HTML aus einem String, einer Datei oder einem Stream sowie das Suchen und Mo
Auch in der Bibliothek
Integration von Prometheus-Metriken in C++: Die Bibliothek prometheus-cpp
Maschinelles Lernen mit PHP: Überblick über Bibliotheken für ML
Reaktive Programmierung in Java: Bibliotheken Project Reactor und RxJava