Comment extraire des données d'un tableau HTML

Les tableaux HTML sont largement utilisés sur le Web pour afficher des informations. L’extraction de données à partir de tableaux HTML est courante dans le scraping Web, l’analyse de données et l’automatisation. Lors de la création d’analyseurs, il est souvent nécessaire d’extraire les données d’un tableau HTML et de les convertir dans un format structuré, tel que JSON, CSV ou Excel. Voyons comment extraire les données d’un tableau HTML.

Tout d’abord, assurez-vous que Aspose.HTML pour .NET est installé dans votre projet. Le processus d’installation de cette bibliothèque est assez simple. Ouvrez le gestionnaire de packages NuGet, recherchez Aspose.HTML et installez. Vous pouvez également utiliser la commande suivante depuis la console Package Manager :


Installer Aspose.HTML pour .NET

Install-Package Aspose.HTML



Extraire les données d'un tableau HTML en utilisant C#

Aspose.HTML for .NET est une bibliothèque robuste qui fournit un ensemble d’outils puissants pour analyser et collecter des informations à partir de documents HTML. L’exemple suivant montre comment rechercher tous les éléments <table> dans un document HTML, extraire les données du tableau et les afficher au format JSON. Disons qu’un tableau en HTML contient une liste de tests, où chaque test a un identifiant, un nom, un commentaire et un lien hypertexte vers le contenu du test. C’est l’information que nous souhaitons extraire du tableau dans l’exemple suivant:


Code C# pour extraire les données d'un tableau HTML

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.");
        }
    }



Étapes pour extraire les données du tableau HTML

En suivant ces étapes, vous pouvez extraire des données de tableau à partir de HTML, telles que des hyperliens et du contenu textuel, à diverses fins, notamment l’analyse de données ou la création de rapports.

  1. Utilisez le constructeur HTMLDocument() pour initialiser un document HTML.
  2. Utilisez la méthode GetElementsByTagName("table") pour collecter tous les éléments <table>. La méthode renvoie une liste des éléments <table> du document HTML. Stockez la collection d’éléments de table dans la variable tables.
  3. Utilisez la méthode LINQ Any() pour vérifier s’il y a des éléments <table> dans le document HTML. Cela garantit qu’il existe des tables à partir desquelles extraire les données.
  4. Parcourez chaque table trouvée dans le document à l’aide d’une boucle foreach:
    • Utilisez la méthode GetElementsByTagName("tbody") pour récupérer tous les éléments <tbody> (corps de table).
    • Dans la boucle, parcourez chaque élément <tbody> pour accéder aux lignes de données obtenues à l’aide d’une autre boucle foreach.
    • Extrayez les données pertinentes de chaque ligne en fonction de conditions ou d’attributs spécifiques.
    • Après avoir extrait les données de toutes les lignes, utilisez la méthode JsonSerializer.Serialize() pour sérialiser la liste des dictionnaires contenant les données extraites au format JSON.
  5. Utilisez la méthode Console.WriteLine() pour générer du JSON sérialisé à afficher dans la console.
  6. Si le document ne contient pas de tableaux, imprimez un message sur la console indiquant qu’aucun tableau n’a été trouvé.

Pour en savoir plus sur l’API Aspose.HTML, veuillez consulter notre guide documentation . Aspose.HTML pour .NET est une bibliothèque d’analyse HTML avancée qui vous permet de créer, modifier et convertir des fichiers HTML, XHTML, MD, EPUB et MHTML. La section de documentation Data Extraction décrit comment inspecter, collecter et extraire automatiquement des données de pages Web à l’aide d’Aspose.HTML pour .NET. Dans les articles de cette section, vous apprendrez à naviguer dans un document HTML et à effectuer une inspection détaillée de ses éléments, à enregistrer un site Web ou un fichier à partir d’une URL, à extraire différents types d’images de sites Web, et bien plus encore.



Générateur de tableaux HTML – Application en ligne

Aspose.HTML propose le Générateur de tableaux HTML , une application en ligne permettant de créer des tableaux avec des options personnalisables. Son utilisation est gratuite et claire. Remplissez simplement toutes les options requises et obtenez un résultat! Le générateur de tableau HTML crée automatiquement le code du tableau HTML. Cet outil a été conçu pour vous permettre d’obtenir un tableau HTML requis et de le mettre en ligne le plus rapidement possible.

Autres fonctionnalités de la bibliothèque C# prises en charge

Utilisez la bibliothèque Aspose.HTML pour .NET pour analyser et manipuler des documents HTML. Clair, sûr et simple !