So extrahieren Sie Daten aus einer HTML-Tabelle

HTML-Tabellen werden im Web häufig zur Anzeige von Informationen verwendet. Das Extrahieren von Daten aus HTML-Tabellen ist beim Web Scraping, bei der Datenanalyse und bei der Automatisierung üblich. Beim Erstellen von Parsern ist es häufig erforderlich, Daten aus einer HTML-Tabelle zu extrahieren und in ein strukturiertes Format wie JSON, CSV oder Excel zu konvertieren. Lassen Sie uns untersuchen, wie Sie Daten aus einer HTML-Tabelle extrahieren.

Stellen Sie zunächst sicher, dass Aspose.HTML für .NET in Ihrem Projekt installiert ist. Der Installationsprozess dieser Bibliothek ist relativ einfach. Sie können es über die NuGet Package Manager-Konsole mit dem folgenden Befehl installieren:


Installieren Sie Aspose.HTML für .NET

Install-Package Aspose.HTML



Extrahieren Sie Daten aus einer HTML-Tabelle mit C#

Aspose.HTML für .NET ist eine robuste Bibliothek, die leistungsstarke Tools zum Parsen und Sammeln von Informationen aus HTML-Dokumenten bereitstellt. Das folgende Beispiel zeigt, wie Sie alle <table>-Elemente in einem HTML-Dokument finden, die Tabellendaten extrahieren und im JSON-Format ausgeben. Nehmen wir an, dass eine Tabelle in HTML eine Liste von Tests enthält, wobei jeder Test eine ID, einen Namen, einen Kommentar dazu und einen Hyperlink zum Inhalt des Tests hat. Dies sind die Informationen, die wir im folgenden Beispiel aus der Tabelle extrahieren möchten:


C#-Code zum Extrahieren von Daten aus einer HTML-Tabelle

using Aspose.Html;
using System.IO;
using System.Linq;
using System.Text.Json;
using System.Collections.Generic;
...

    // Open the document from which you want to extract table data
    using var document = new HTMLDocument(Path.Combine(DataDir, "chapter-9.htm"));
    {
        // Check if there are any table elements in the document
        var tables = document.GetElementsByTagName("table");

        if (tables.Any())
        {
            var result = new List<Dictionary<string, string>>();
            //var i = 0;
            foreach (var table in tables)
            {
                // extract data from html table
                var tbodies = table.GetElementsByTagName("tbody");

                foreach (var tbody in tbodies)
                {
                    if (tbody.Children.Length > 1)
                    {
                        foreach (var row in tbody.Children)
                        {
                            if (row.HasAttribute("id"))
                            {
                                //test row
                                var data = new Dictionary<string, string>();

                                data["Id"] = row.GetAttribute("id");
                                if (row.Children.Length > 0)
                                {
                                    var td = row.Children[0];
                                    if (td.Children.Length > 0)
                                    {
                                        var element = td.Children[0].TagName == "STRONG"
                                            ? td.Children[0].Children[0]
                                            : td.Children[0];
                                        var href = ((HTMLAnchorElement)element).Href;
                                        data["Href"] = href;
                                        data["TestName"] = Path.GetFileNameWithoutExtension(href);
                                    }
                                }

                                data["TestComment"] = string.Join(" ",
                                    row.Children[3].TextContent
                                        .Split(new char[0], StringSplitOptions.RemoveEmptyEntries).ToList()
                                        .Select(x => x.Trim()));
                                result.Add(data);
                            }
                        }
                        var json = JsonSerializer.Serialize(result);
                        Console.WriteLine(json);
                    }
                }
            }
        }
        else
        {
            // Handle the case where no tables are found
            Console.WriteLine("No tables found in the document.");
        }
    }



Schritte zum Extrahieren von Daten aus einer HTML-Tabelle

Wenn Sie diese Schritte befolgen, können Sie Tabellendaten wie Hyperlinks und Textinhalte aus HTML extrahieren – für verschiedene Zwecke, einschließlich Datenanalyse oder Berichterstellung.

  1. Verwenden Sie den Konstruktor HTMLDocument() , um ein HTML-Dokument zu initialisieren. Übergeben Sie den Pfad der HTML-Quelldatei als Parameter an den Konstruktor.
  2. Verwenden Sie die Methode GetElementsByTagName("table") , um alle <table>-Elemente zu sammeln. Die Methode gibt eine Liste der <table>-Elemente des HTML-Dokuments zurück. Speichern Sie die Sammlung von Tabellenelementen in der Variablen tables.
  3. Verwenden Sie die LINQ-Methode Any(), um zu überprüfen, ob im HTML-Dokument irgendwelche <table>-Elemente vorhanden sind. Dadurch wird sichergestellt, dass Tabellen vorhanden sind, aus denen Daten extrahiert werden können.
  4. Durchlaufen Sie jede im Dokument gefundene Tabelle mithilfe einer foreach-Schleife: – Verwenden Sie die Methode GetElementsByTagName("tbody"), um alle <tbody>-Elemente (Tabellenkörper) abzurufen.
    • Durchlaufen Sie innerhalb der Schleife jedes <tbody>-Element, um auf die Datenzeilen zuzugreifen, die Sie mit einer anderen foreach-Schleife erhalten haben.
    • Extrahieren Sie relevante Daten aus jeder Zeile basierend auf bestimmten Bedingungen oder Attributen.
    • Nachdem Sie Daten aus allen Zeilen extrahiert haben, verwenden Sie die Methode JsonSerializer.Serialize(), um die Liste der Wörterbücher, die die extrahierten Daten enthalten, in das JSON-Format zu serialisieren.
  5. Verwenden Sie die Methode Console.WriteLine(), um serialisiertes JSON zur Anzeige in der Konsole auszugeben.
  6. Wenn das Dokument keine Tabellen enthält, geben Sie eine Meldung an die Konsole aus, dass keine Tabellen gefunden wurden.

Um mehr über die Aspose.HTML-API zu erfahren, besuchen Sie bitte unseren Dokumentation -Leitfaden. Aspose.HTML für .NET ist eine erweiterte HTML-Parsing-Bibliothek, mit der Sie HTML-, XHTML-, MD-, EPUB- und MHTML-Dateien erstellen, bearbeiten und konvertieren können. Im Dokumentationsabschnitt Data Extraction wird beschrieben, wie Sie mit Aspose.HTML für .NET automatisch Daten von Webseiten prüfen, sammeln und extrahieren. In den Artikeln in diesem Abschnitt erfahren Sie, wie Sie durch ein HTML-Dokument navigieren und eine detaillierte Prüfung seiner Elemente durchführen, eine Website oder Datei von einer URL speichern, verschiedene Arten von Bildern aus Websites extrahieren und vieles mehr.



HTML-Tabellengenerator – Online-App

Aspose.HTML bietet den HTML Tabellen-Generator an, eine Online-Anwendung zum Erstellen von Tabellen mit anpassbaren Optionen. Es ist kostenlos und klar zu bedienen. Füllen Sie einfach alle erforderlichen Optionen aus und erhalten Sie ein Ergebnis! Der HTML-Tabellengenerator erstellt automatisch den HTML-Tabellencode. Dieses Tool wurde entwickelt, damit Sie eine erforderliche HTML-Tabelle erhalten und so schnell wie möglich online stellen können.