Extraer datos de tablas HTML con una API de .NET

Aspose.HTML for .NET carga un archivo HTML en un HTMLDocument para consultar su DOM y extraer contenido tabular estructurado. Seleccione el elemento <table>, recorra sus filas, lea las celdas <th> y <td> y envíe los valores a JSON, CSV, una base de datos u otro proceso.


Extraer una tabla HTML a JSON en C#

El siguiente ejemplo selecciona la primera tabla de input.html, conserva el orden de las celdas de encabezado y de datos y escribe los valores en table-data.json. Utilice un selector más específico si existen varias tablas.

Código C# para extraer datos de tablas HTML

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

string inputPath = "input.html";
string outputPath = "table-data.json";

using HTMLDocument document = new HTMLDocument(inputPath);

// Select the table to extract
Element table = document.QuerySelector("table");
if (table == null)
{
    throw new InvalidOperationException("The HTML document does not contain a table.");
}

List<List<string>> tableData = new List<List<string>>();

// Read header and data cells in document order
foreach (Element row in table.QuerySelectorAll("tr"))
{
    List<string> values = new List<string>();

    foreach (Element cell in row.QuerySelectorAll("th, td"))
    {
        values.Add(cell.TextContent.Trim());
    }

    if (values.Count > 0)
    {
        tableData.Add(values);
    }
}

JsonSerializerOptions options = new JsonSerializerOptions
{
    WriteIndented = true
};

string json = JsonSerializer.Serialize(tableData, options);
File.WriteAllText(outputPath, json);

Pasos para extraer datos de una tabla HTML

  1. Cargue el archivo de origen con un constructor de HTMLDocument .
  2. Seleccione la tabla con QuerySelector() . Un selector de identificador o clase es más seguro que table cuando hay varias tablas.
  3. Utilice QuerySelectorAll() para obtener las filas y después las celdas <th> y <td>.
  4. Lea y normalice el TextContent de cada celda conservando el orden de filas y columnas.
  5. Serialice los valores con JsonSerializer y guarde el archivo JSON.

Opciones y limitaciones de la extracción de datos

  • Seleccionar la tabla correcta. Utilice #id, .class, main table u otro selector CSS estable. Consulte Selector CSS y Consulta XPath para ver más patrones.
  • Procesar una o varias tablas. Sustituya QuerySelector() por QuerySelectorAll("table") para extraer todas las tablas.
  • Controlar las filas. El selector tr lee filas de <thead>, <tbody> y <tfoot>. Restrínjalo para omitir el pie o procesar cada sección por separado.
  • Considerar tablas anidadas. Un selector descendiente también puede alcanzar filas de tablas anidadas. Utilice selectores vinculados a la estructura requerida para tratarlas como conjuntos separados.
  • Elegir el formato de destino. La API DOM proporciona los valores; los serializadores y las API de archivos de .NET pueden escribir JSON, CSV, texto o registros propios.

Documentación sobre la extracción de datos de tablas

La guía Extraer tablas HTML en C# incluye archivos locales, URL, encabezados, enlaces y salidas CSV o de texto. La sección Extracción de datos también trata la navegación DOM, los selectores CSS, XPath y otros contenidos web.


Instalar Aspose.HTML for .NET

Instale Aspose.HTML for .NET desde NuGet con la CLI de .NET:

dotnet add package Aspose.HTML

También puede usar la interfaz del Administrador de paquetes NuGet o ejecutar Install-Package Aspose.HTML en la consola del Administrador de paquetes. Consulte la guía de instalación para configurar la biblioteca o solicite una licencia temporal para evaluar la API sin limitaciones.


Preguntas frecuentes sobre la extracción de datos de tablas

1. ¿Cómo incluyo los encabezados de tabla en los datos extraídos?

Lea elementos <th> y <td> en cada fila. El selector th, td mantiene los encabezados en su posición original dentro del resultado JSON.

2. ¿Se conservan las celdas vacías en el resultado JSON?

Sí. Cada <th> o <td> produce un valor y una celda vacía se convierte en una cadena vacía después de TextContent.Trim(), por lo que conserva su posición.

3. ¿Puedo guardar los datos extraídos como CSV o Excel?

El flujo DOM devuelve valores sin imponer un formato. Escríbalos como CSV con las API de .NET, serialícelos como JSON o páselos al componente de hojas de cálculo de su aplicación para crear un libro de Excel.

4. ¿El código expande automáticamente rowspan y colspan?

No. Los atributos siguen disponibles en las celdas, pero una lista plana no representa las posiciones ocupadas. Añada lógica de normalización para obtener un conjunto rectangular.

5. ¿Puedo extraer enlaces o marcado HTML en lugar de texto?

Sí. TextContent devuelve solo texto. Utilice InnerHTML para conservar el marcado o seleccione elementos <a> y lea su texto y sus atributos href.

Operaciones relacionadas con tablas HTML

Cree o edite tablas y extraiga tablas con su marcado mediante guías de Aspose.HTML for .NET.