Como extrair dados da tabela HTML

As tabelas HTML são amplamente utilizadas na web para exibir informações. A extração de dados de tabelas HTML é comum em web scraping, análise de dados e automação. Ao construir analisadores, muitas vezes é necessário extrair dados de uma tabela HTML e convertê-los em um formato estruturado, como JSON, CSV ou Excel. Vamos explorar como extrair dados da tabela HTML.

Primeiro, certifique-se de ter Aspose.HTML for .NET instalado em seu projeto. O processo de instalação desta biblioteca é bastante simples. Abra o gerenciador de pacotes NuGet, procure Aspose.HTML e instale. Você também pode usar o seguinte comando do Console do Gerenciador de Pacotes:


Instale Aspose.HTML para .NET

Install-Package Aspose.HTML



Extraia dados da tabela HTML usando C#

Aspose.HTML for .NET é uma biblioteca robusta que fornece um poderoso conjunto de ferramentas para analisar e coletar informações de documentos HTML. O exemplo a seguir mostra como encontrar todos os elementos <table> em um documento HTML, extrair os dados da tabela e gerá-los no formato JSON. Digamos que uma tabela em HTML contém uma lista de testes, onde cada teste possui um ID, um nome, um comentário e um hiperlink para o conteúdo do teste. Esta é a informação que queremos extrair da tabela no exemplo a seguir:


Código C# para extrair dados da tabela 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.");
        }
    }



Etapas para extrair dados da tabela HTML

Seguindo essas etapas, você pode extrair dados de tabela de HTML, como hiperlinks e conteúdo de texto – para diversos fins, incluindo análise de dados ou relatórios.

  1. Use o construtor HTMLDocument() para inicializar um documento HTML.
  2. Use o método GetElementsByTagName("table") para coletar todos os elementos <table>. O método retorna uma lista dos elementos <table> do documento HTML. Armazene a coleção de elementos da tabela na variável tables.
  3. Use o método LINQ Any() para verificar se há algum elemento <table> no documento HTML. Isso garante que haja tabelas das quais extrair dados.
  4. Itere cada tabela encontrada no documento usando um loop foreach:
    • Use o método GetElementsByTagName("tbody") para recuperar todos os elementos <tbody> (corpos da tabela).
    • Dentro do loop, itere através de cada elemento <tbody> para acessar as linhas de dados obtidas usando outro loop foreach.
    • Extraia dados relevantes de cada linha com base em condições ou atributos específicos.
    • Após extrair os dados de todas as linhas, use o método JsonSerializer.Serialize() para serializar a lista de dicionários contendo os dados extraídos para o formato JSON.
  5. Use o método Console.WriteLine() para gerar JSON serializado para exibição no console.
  6. Se o documento não contiver tabelas, imprima uma mensagem no console indicando que nenhuma tabela foi encontrada.

Para saber mais sobre a API Aspose.HTML, visite nosso guia documentação . Aspose.HTML for .NET é uma biblioteca avançada de análise de HTML que permite criar, editar e converter arquivos HTML, XHTML, MD, EPUB e MHTML. A seção de documentação Data Extraction descreve como inspecionar, coletar e extrair automaticamente dados de páginas da web usando Aspose.HTML for .NET. Nos artigos desta seção, você aprenderá como navegar em um documento HTML e realizar uma inspeção detalhada de seus elementos, salvar um site ou arquivo de uma URL, extrair diferentes tipos de imagens de sites e muito mais.



Gerador de Tabela HTML – Aplicativo Online

Aspose.HTML oferece o Gerador de tabelas HTML é um aplicativo online para criação de tabelas com opções personalizáveis. É gratuito e fácil de usar. Basta preencher todas as opções obrigatórias e obter o resultado! O Gerador de Tabela HTML cria automaticamente o código da tabela HTML. Esta ferramenta foi projetada para permitir que você obtenha uma tabela HTML necessária e a coloque online o mais rápido possível.

Outros recursos da biblioteca C# com suporte

Use a biblioteca Aspose.HTML for .NET para analisar e manipular documentos baseados em HTML. Claro, seguro e simples!