如何从 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 中提取表格数据(例如超链接和文本内容),用于各种目的,包括数据分析或报告。
- 使用 HTMLDocument() 构造函数初始化 HTML 文档。将源 HTML 文件的路径作为参数传递给构造函数。
- 使用
GetElementsByTagName(
"table"
) 方法收集所有<table>
元素。该方法返回 HTML 文档的<table>
元素的列表。将表元素的集合存储在tables
变量中。 - 使用 LINQ
Any()
方法检查 HTML 文档中是否存在任何<table>
元素。这确保有可以从中提取数据的表。 - 使用
foreach
循环遍历文档中找到的每个表:- 使用
GetElementsByTagName("tbody")
方法检索所有<tbody>
元素(表体)。 - 在循环内,迭代每个
<tbody>
元素以访问使用另一个foreach
循环获得的数据行。 - 根据特定条件或属性从每一行中提取相关数据。
- 从所有行中提取数据后,使用
JsonSerializer.Serialize()
方法将包含提取数据的字典列表序列化为 JSON 格式。
- 使用
- 使用
Console.WriteLine()
方法输出序列化的 JSON 以在控制台中显示。 - 如果文档不包含表格,则向控制台打印一条消息,指示未找到表格。
要了解有关 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 表格并尽快将其放到网上。
其他支持的 C# 库功能
使用 Aspose.HTML for .NET 库来解析和操作基于 HTML 的文档。清晰、安全、简单!