HTML-Parsing in C# (.NET): Überblick über die Bibliotheken HtmlAgilityPack und AngleSharp
HTML-Parsing ist eine der Kernaufgaben bei der Entwicklung von Web-Scraping-Tools, Inhaltsanalysatoren oder automatisierten Tests. Im .NET-Ökosystem gibt es mehrere leistungsstarke Bibliotheken, mit denen Sie Daten aus HTML-Dokumenten extrahieren, den DOM-Baum manipulieren und komplexe Abfragen durchführen können. In diesem Artikel betrachten wir die beiden beliebtesten Bibliotheken: HtmlAgilityPack und AngleSharp. Sie erfahren ihre Besonderheiten, Vorteile und erhalten fertige Codebeispiele in C#.
HtmlAgilityPack: Der klassische Ansatz
HtmlAgilityPack (HAP) ist die älteste und am weitesten verbreitete Bibliothek für HTML-Parsing in .NET. Sie bietet eine intuitive API für die Navigation im DOM-Baum und unterstützt XPath- und LINQ-Abfragen. Die wichtigsten Funktionen:
- Laden von HTML aus einem String, einer Datei oder einer URL.
- Unterstützung von XPath 1.0 für präzise Elementsuche.
- Arbeit mit Attributen, Text und verschachtelten Knoten.
- Automatische Korrektur von fehlerhaftem HTML (z. B. nicht geschlossene Tags).
Installation
Installieren Sie die Bibliothek über NuGet:
Install-Package HtmlAgilityPackOder über die .NET CLI:
dotnet add package HtmlAgilityPackBeispiel: Extrahieren von Nachrichtenüberschriften
Angenommen, wir möchten die Überschriften einer Nachrichten-Website parsen. So geht das mit HAP und XPath:
using HtmlAgilityPack;using System;using System.Linq;
class Program{ static void Main() { // HTML-Dokument laden var web = new HtmlWeb(); var doc = web.Load("https://example-news.com"); // Alle h2-Überschriften mit der Klasse "news-title" auswählen var titles = doc.DocumentNode .SelectNodes("//h2[@class='news-title']"); if (titles != null) { foreach (var title in titles) { Console.WriteLine(title.InnerText.Trim()); } } }}In diesem Beispiel verwenden wir den XPath-Ausdruck //h2[@class='news-title'], um alle <h2>-Elemente mit der angegebenen Klasse zu finden. Die Methode SelectNodes gibt eine Knotensammlung zurück, und InnerText extrahiert den Text ohne HTML-Tags.
Arbeit mit Attributen
Häufig muss der Wert eines Attributs abgerufen werden, z. B. Links aus <a>-Tags:
var links = doc.DocumentNode.SelectNodes("//a[@href]");if (links != null){ foreach (var link in links) { string href = link.GetAttributeValue("href", ""); Console.WriteLine(href); }}AngleSharp: Moderner Parser mit CSS-Selektoren
AngleSharp ist eine modernere Bibliothek, die nicht nur XPath, sondern auch CSS-Selektoren unterstützt, was sie für Entwickler, die mit Webtechnologien vertraut sind, besonders praktisch macht. Sie entspricht zudem vollständig den W3C-Standards und kann mit dynamischen Inhalten arbeiten.
- Unterstützung von CSS-Selektoren (wie in jQuery).
- Arbeit mit HTML, XML, SVG und MathML.
- Möglichkeit zur Ausführung von JavaScript (über Erweiterungen).
- Asynchrones Laden von Dokumenten.
Installation
dotnet add package AngleSharpBeispiel: Datenextraktion mit CSS-Selektoren
Wiederholen wir das vorherige Beispiel, diesmal mit AngleSharp und CSS-Selektoren:
using AngleSharp;using AngleSharp.Html.Parser;using System;using System.Linq;using System.Threading.Tasks;
class Program{ static async Task Main() { // Parser erstellen var parser = new HtmlParser(); // HTML laden (aus einem String oder einer URL) var document = await parser.ParseDocumentAsync( a Auch in der Bibliothek
Internationalisierung (i18n) in TypeScript: Vollständiger Leitfaden
Bildverarbeitung in C#: Resize, Crop mit der Bibliothek ImageSharp
Mockery PHP: Vollständige Anleitung mit Beispielen
OAuth-Client für Go (Golang): Verbindung zu OAuth 2.0-Anbietern