Analisar Dados de Tabelas HTML com uma API .NET

Aspose.HTML for .NET carrega um arquivo HTML em um HTMLDocument para que uma aplicação C# possa consultar o DOM e extrair conteúdo tabular estruturado. Selecione a <table> necessária, percorra suas linhas, leia células <th> e <td> e envie os valores coletados para JSON, CSV, um banco de dados ou outro fluxo da aplicação.


Extrair uma Tabela HTML para JSON em C#

O exemplo seleciona a primeira tabela de input.html, preserva a ordem das células de cabeçalho e de dados e grava os valores em table-data.json. Use um seletor mais específico quando o documento contiver várias tabelas.

Código C# para Extrair Dados de Tabela 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);

Etapas para Extrair Dados de uma Tabela HTML

  1. Carregue o arquivo de origem com um construtor de HTMLDocument .
  2. Selecione a tabela necessária com QuerySelector() . Um seletor de ID ou classe é mais seguro que table quando há várias tabelas.
  3. Use QuerySelectorAll() para coletar as linhas e depois as células <th> e <td> de cada linha.
  4. Leia e normalize o TextContent de cada célula, preservando a ordem original das linhas e colunas.
  5. Serialize os valores coletados com JsonSerializer e salve o arquivo JSON resultante.

Opções e Limitações da Extração de Tabelas HTML

  • Selecione a tabela correta. Use #id, .class, main table ou outro seletor CSS estável em vez de presumir que a primeira tabela é a desejada. Para mais padrões, consulte Seletor CSS e Consulta XPath .
  • Processe uma ou várias tabelas. Substitua QuerySelector() por QuerySelectorAll("table") quando a aplicação precisar extrair todas as tabelas do documento.
  • Controle o escopo das linhas. O seletor tr lê linhas de <thead>, <tbody> e <tfoot>. Restrinja-o quando a saída precisar omitir o rodapé ou processar as seções separadamente.
  • Considere tabelas aninhadas. Um seletor descendente também pode alcançar linhas de uma tabela interna. Use seletores vinculados à estrutura necessária quando tabelas aninhadas representarem conjuntos de dados separados.
  • Escolha o formato de destino. A API DOM fornece os valores extraídos; serializadores e APIs de arquivo padrão do .NET podem gravá-los como JSON, CSV, texto ou registros específicos da aplicação.

Documentação sobre Extração de Tabelas HTML

Consulte Extrair Tabelas HTML em C# para exemplos com arquivos locais e URLs, preservação de cabeçalhos, extração de links e gravação em CSV ou texto. A seção Extração de Dados também aborda navegação DOM, seletores CSS, XPath e outros tipos de conteúdo web.


Instalar o Aspose.HTML for .NET

Instale o Aspose.HTML for .NET pelo NuGet usando a CLI do .NET:

dotnet add package Aspose.HTML

Você também pode usar a interface do Gerenciador de Pacotes NuGet ou executar Install-Package Aspose.HTML no Console do Gerenciador de Pacotes. Consulte o guia de instalação para configurar a biblioteca ou solicite uma licença temporária para avaliar a API sem limitações.


Perguntas Frequentes sobre Extração de Dados de Tabelas

1. Como incluo os cabeçalhos da tabela nos dados extraídos?

Leia os elementos <th> e <td> de cada linha. O exemplo usa o seletor th, td, portanto os valores dos cabeçalhos permanecem na posição original no resultado JSON.

2. As células vazias são mantidas no resultado JSON?

Sim. Cada <th> ou <td> selecionado produz uma string, e uma célula vazia se torna uma string vazia após TextContent.Trim(). Isso preserva a posição da célula na linha.

3. Posso salvar os dados extraídos como CSV ou Excel?

O fluxo DOM retorna os valores das células sem impor um formato de saída. Grave-os como CSV com APIs padrão do .NET, serialize-os como JSON ou encaminhe-os ao componente de planilha usado pela aplicação para criar uma pasta de trabalho do Excel.

4. O código expande rowspan e colspan automaticamente?

Não. Os atributos continuam disponíveis nas células, mas uma lista simples não representa as posições ocupadas na grade. Adicione lógica de normalização quando a saída precisar expandir células mescladas em um conjunto retangular.

5. Posso extrair links ou marcação HTML das células em vez de texto simples?

Sim. TextContent retorna apenas o texto da célula. Use InnerHTML para manter a marcação aninhada ou selecione os elementos <a> de cada célula e leia o texto e o atributo href quando os destinos dos links forem necessários.

Fluxos Relacionados para Tabelas HTML

Crie ou edite tabelas e extraia tabelas com sua marcação usando guias do Aspose.HTML for .NET.