使用 .NET API 从 HTML 文件提取表格

Aspose.HTML for .NET 将 HTML 文件加载到 HTMLDocument 中,并通过 DOM 提供对表格的访问。C# 应用程序可以选择一个或全部 <table> 元素,读取其 OuterHTML,并创建包含完整表格标记的独立 HTML 文档。


使用 C# 提取 HTML 文件中的所有表格

以下示例选择 input.html 中的所有表格,并将每个表格保存为带编号的 HTML 文件。源文档的基准 URI 会传给每个输出文档,因此处理表格时可从原始位置解析相对资源 URL。

提取 HTML 表格的 C# 代码

using Aspose.Html;
using Aspose.Html.Dom;
using System;

// Load the source HTML file
using HTMLDocument document = new HTMLDocument("input.html");

int tableNumber = 1;
foreach (Element table in document.QuerySelectorAll("table"))
{
    // Save each complete table to a separate HTML file
    string outputPath = $"table-{tableNumber}.html";

    using HTMLDocument tableDocument = new HTMLDocument(table.OuterHTML, document.BaseURI);
    tableDocument.Save(outputPath);

    tableNumber++;
}

if (tableNumber == 1)
{
    // Report that the selector returned no tables
    Console.WriteLine("No tables were found in the HTML document.");
}

从 HTML 提取表格的步骤

  1. 使用 HTMLDocument 构造函数加载源文件。
  2. 使用 QuerySelectorAll("table") 选择表格元素。
  3. 遍历返回的元素并读取每个表格的 OuterHTML 。
  4. 使用提取的标记和源文档的基准 URI 创建新的 HTMLDocument。
  5. 为每个提取的表格使用唯一输出文件名调用 Save() 。

HTML 表格提取选项和限制

  • 选择提取范围。 使用 table 选择所有表格,或使用 #price-table、.results table、main table 等更具体的选择器限制结果。
  • 保留表格标记。 OuterHTML 包含选中的 <table> 元素及其属性、行、单元格和嵌套内容。
  • 保留资源解析上下文。 传入 document.BaseURI 后,处理期间可相对于源文档解释提取标记中的相对 URL。
  • 单独处理样式。 表格内的内联样式和 style 属性会保留在标记中。源文档 <head> 中的规则或外部样式表不会复制到仅包含表格的文档。
  • 区分标记提取和数据提取。 此工作流保存每个选中的 <table> 元素及其标记。如需收集单元格值并输出为 JSON、CSV 或其他格式,请使用 提取 HTML 表格数据 。

HTML 表格提取文档

请参阅 使用 C# 提取 HTML 表格 ,了解表格选择、行和单元格处理、链接提取及输出示例。 数据提取 部分还介绍 DOM 导航、CSS 选择器、XPath 和其他网页内容提取工作流。


安装 Aspose.HTML for .NET

使用 .NET CLI 从 NuGet 安装 Aspose.HTML for .NET :

dotnet add package Aspose.HTML

您也可以使用 NuGet 包管理器界面,或在包管理器控制台中运行 Install-Package Aspose.HTML。有关配置详情,请参阅 安装指南 ;如需不受评估版限制地测试 API,请申请 临时许可证 。


HTML 表格提取常见问题

1. 可以从一个 HTML 文件提取所有表格吗?

可以。QuerySelectorAll("table") 按文档顺序返回所有匹配的表格。遍历结果,并在每个表格需要单独保存时分配唯一的输出名称。

2. 如何只提取一个指定的 HTML 表格?

将稳定的 ID、类或结构选择器传给 QuerySelector(),例如 #price-table 或 main table。该方法返回第一个匹配项,而不是收集所有 <table> 元素。

3. 提取的 HTML 表格会保留 CSS 格式吗?

表格内的内联样式和 style 属性会保留在 OuterHTML 中。如果独立文件需要保持相同外观,必须另行复制或链接原文档 <head> 中的 CSS 规则或外部样式表。

4. 可以将表格数据提取为 CSV 或 JSON,而不是保存 HTML 标记吗?

可以,但这是不同的工作流。遍历表格行,读取 <th> 和 <td> 的值,再传给 CSV 写入器或 JSON 序列化器。完整示例请参阅 提取 HTML 表格数据 。

5. 嵌套的 HTML 表格会被单独提取吗?

通用的 table 选择器会匹配外层和嵌套表格。如果嵌套表格只应保留在父表格内部,而不应另存为输出文件,请使用更具体的选择器。

相关 HTML 表格工作流

使用 Aspose.HTML for .NET 专题指南创建、编辑或提取表格值。