Cómo extraer datos de una tabla HTML

Las tablas HTML se utilizan ampliamente en la web para mostrar información. La extracción de datos de tablas HTML es común en el web scraping, el análisis de datos y la automatización. Al crear analizadores, a menudo es necesario extraer datos de una tabla HTML y convertirlos a un formato estructurado, como JSON, CSV o Excel. Exploremos cómo extraer datos de una tabla HTML.

Primero, asegúrese de tener Aspose.HTML para .NET instalado en su proyecto. El proceso de instalación de esta biblioteca es bastante sencillo. Abra el administrador de paquetes NuGet, busque Aspose.HTML e instálelo. También puede utilizar el siguiente comando desde la Consola del Administrador de paquetes:


Instalar Aspose.HTML para .NET

Install-Package Aspose.HTML



Extraiga datos de una tabla HTML usando C#

Aspose.HTML para .NET es una biblioteca sólida que proporciona un potente conjunto de herramientas para analizar y recopilar información de documentos HTML. El siguiente ejemplo muestra cómo encontrar todos los elementos <table> en un documento HTML, extraer los datos de la tabla y generarlos en formato JSON. Digamos que una tabla en HTML contiene una lista de pruebas, donde cada prueba tiene un ID, un nombre, un comentario y un hipervínculo al contenido de la prueba. Esta es la información que queremos extraer de la tabla del siguiente ejemplo:


Código C# para extraer datos de una tabla 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.");
        }
    }



Pasos para extraer datos de una tabla HTML

Si sigue estos pasos, puede extraer datos de tablas de HTML, como hipervínculos y contenido de texto, para diversos fines, incluido el análisis de datos o la generación de informes.

  1. Utilice el constructor HTMLDocument() para inicializar un documento HTML. Pase la ruta del archivo HTML de origen como parámetro al constructor.
  2. Utilice el método GetElementsByTagName("table") para recopilar todos los elementos <table>. El método devuelve una lista de los elementos <table> del documento HTML. Almacene la colección de elementos de la tabla en la variable tables.
  3. Utilice el método LINQ Any() para comprobar si hay elementos <table> en el documento HTML. Esto garantiza que haya tablas de las que extraer datos.
  4. Repita cada tabla que se encuentra en el documento usando un bucle foreach:
    • Utilice el método GetElementsByTagName("tbody") para recuperar todos los elementos <tbody> (cuerpos de la tabla).
    • Dentro del bucle, itere a través de cada elemento <tbody> para acceder a las filas de datos obtenidos usando otro bucle foreach.
    • Extraiga datos relevantes de cada fila en función de condiciones o atributos específicos.
    • Después de extraer datos de todas las filas, utilice el método JsonSerializer.Serialize() para serializar la lista de diccionarios que contienen los datos extraídos al formato JSON.
  5. Utilice el método Console.WriteLine() para generar JSON serializado para mostrarlo en la consola.
  6. Si el documento no contiene tablas, imprima un mensaje en la consola indicando que no se encontraron tablas.

Para obtener más información sobre la API Aspose.HTML, visite nuestra guía de documentación . Aspose.HTML para .NET es una biblioteca de análisis HTML avanzada que le permite crear, editar y convertir archivos HTML, XHTML, MD, EPUB y MHTML. La sección de documentación Data Extraction describe cómo inspeccionar, recopilar y extraer datos automáticamente de páginas web utilizando Aspose.HTML para .NET. En los artículos de esta sección, aprenderá cómo navegar por un documento HTML y realizar una inspección detallada de sus elementos, guardar un sitio web o un archivo desde una URL, extraer diferentes tipos de imágenes de sitios web y más.



Generador de tablas HTML: aplicación en línea

Aspose.HTML ofrece el Generador de tablas HTML es una aplicación en línea para crear tablas con opciones personalizables. Es gratis y claro de usar. ¡Simplemente complete todas las opciones requeridas y obtenga un resultado! El generador de tablas HTML crea automáticamente el código de la tabla HTML. Esta herramienta fue diseñada para permitirle obtener una tabla HTML requerida y ponerla en línea lo más rápido posible.

Otras características de la biblioteca C# compatibles

Utilice la biblioteca Aspose.HTML para .NET para analizar y manipular documentos basados ​​en HTML. ¡Claro, seguro y sencillo!