如何从 HTML 表格中提取数据

HTML 表格在网络上广泛用于显示信息。从 HTML 表格中提取数据在网络抓取、数据分析和自动化中很常见。构建解析器时,通常需要从 HTML 表中提取数据并将其转换为结构化格式,例如 JSON、CSV 或 Excel。让我们探讨如何从 HTML 表中提取数据。

首先,确保您的项目中安装了 Aspose.HTML for .NET。 这个库的安装过程非常简单。 打开 NuGet 包管理器,搜索 Aspose.HTML,然后安装。 您还可以从包管理器控制台使用以下命令:


安装 Aspose.HTML for .NET

Install-Package Aspose.HTML



使用 C# 从 HTML 表中提取数据

Aspose.HTML for .NET 是一个强大的库,它提供了一组强大的工具来解析和收集 HTML 文档中的信息。以下示例演示如何查找 HTML 文档中的所有<table>元素,提取表数据,并以 JSON 格式输出。假设 HTML 中的一个表包含一个测试列表,其中每个测试都有一个 ID、名称、注释以及指向测试内容的超链接。这是我们要从以下示例中的表中提取的信息:


从 HTML 表中提取数据的 C# 代码

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.");
        }
    }



从 HTML 表中提取数据的步骤

通过执行这些步骤,您可以从 HTML 中提取表格数据(例如超链接和文本内容),用于各种目的,包括数据分析或报告。

  1. 使用 HTMLDocument() 构造函数初始化 HTML 文档。将源 HTML 文件的路径作为参数传递给构造函数。
  2. 使用 GetElementsByTagName("table") 方法收集所有 <table> 元素。该方法返回 HTML 文档的<table>元素的列表。将表元素的集合存储在tables变量中。
  3. 使用 LINQ Any() 方法检查 HTML 文档中是否存在任何 <table> 元素。这确保有可以从中提取数据的表。
  4. 使用foreach循环遍历文档中找到的每个表:
    • 使用GetElementsByTagName("tbody")方法检索所有<tbody>元素(表体)。
    • 在循环内,迭代每个<tbody>元素以访问使用另一个foreach循环获得的数据行。
    • 根据特定条件或属性从每一行中提取相关数据。
    • 从所有行中提取数据后,使用 JsonSerializer.Serialize() 方法将包含提取数据的字典列表序列化为 JSON 格式。
  5. 使用 Console.WriteLine() 方法输出序列化的 JSON 以在控制台中显示。
  6. 如果文档不包含表格,则向控制台打印一条消息,指示未找到表格。

要了解有关 Aspose.HTML API 的更多信息,请访问我们的 文档 指南。 Aspose.HTML for .NET 是一个高级 HTML 解析库,允许您创建、编辑和转换 HTML、XHTML、MD、EPUB 和 MHTML 文件。 Data Extraction 文档部分介绍了如何使用 Aspose.HTML for .NET 自动检查、收集和提取网页中的数据。在本部分的文章中,您将了解如何导航 HTML 文档并对其元素执行详细检查、从 URL 保存网站或文件、从网站提取不同类型的图像等等。



HTML 表格生成器 – 在线应用程序

Aspose.HTML 提供的 HTML 表生成器 是一个在线应用程序,用于创建具有可自定义选项的表。它是免费且易于使用的。只需填写所有必填选项即可获得结果! HTML 表格生成器自动创建 HTML 表格代码。该工具旨在让您获得所需的 HTML 表格并尽快将其放到网上。