使用 .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 提取表格的步骤
- 使用
HTMLDocument构造函数加载源文件。 - 使用
QuerySelectorAll("table")选择表格元素。 - 遍历返回的元素并读取每个表格的
OuterHTML。 - 使用提取的标记和源文档的基准 URI 创建新的
HTMLDocument。 - 为每个提取的表格使用唯一输出文件名调用
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 专题指南创建、编辑或提取表格值。