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
- Carregue o arquivo de origem com um construtor de
HTMLDocument. - Selecione a tabela necessária com
QuerySelector(). Um seletor de ID ou classe é mais seguro quetablequando há várias tabelas. - Use
QuerySelectorAll()para coletar as linhas e depois as células<th>e<td>de cada linha. - Leia e normalize o
TextContentde cada célula, preservando a ordem original das linhas e colunas. - Serialize os valores coletados com
JsonSerializere salve o arquivo JSON resultante.
Opções e Limitações da Extração de Tabelas HTML
- Selecione a tabela correta. Use
#id,.class,main tableou 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()porQuerySelectorAll("table")quando a aplicação precisar extrair todas as tabelas do documento. - Controle o escopo das linhas. O seletor
trlê 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.