Извлечение данных HTML-таблиц с помощью .NET API

Aspose.HTML for .NET загружает HTML-файл в объект HTMLDocument , после чего приложение C# может обращаться к DOM и извлекать структурированные табличные данные. Выберите нужный элемент <table>, переберите строки, считайте ячейки <th> и <td> и передайте полученные значения в JSON, CSV, базу данных или другой процесс приложения.


Извлечение HTML-таблицы в JSON на C#

Следующий пример выбирает первую таблицу в файле input.html, сохраняет исходный порядок заголовочных ячеек и ячеек данных и записывает значения в файл table-data.json. Если документ содержит несколько таблиц, используйте более точный селектор.

Код C# для извлечения данных HTML-таблицы

using Aspose.Html;
using Aspose.Html.Dom;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.Json;

string inputPath = "input.html";
string outputPath = "table-data.json";

using HTMLDocument document = new HTMLDocument(inputPath);

// Select the table to extract
Element table = document.QuerySelector("table");
if (table == null)
{
    throw new InvalidOperationException("The HTML document does not contain a table.");
}

List<List<string>> tableData = new List<List<string>>();

// Read header and data cells in document order
foreach (Element row in table.QuerySelectorAll("tr"))
{
    List<string> values = new List<string>();

    foreach (Element cell in row.QuerySelectorAll("th, td"))
    {
        values.Add(cell.TextContent.Trim());
    }

    if (values.Count > 0)
    {
        tableData.Add(values);
    }
}

JsonSerializerOptions options = new JsonSerializerOptions
{
    WriteIndented = true
};

string json = JsonSerializer.Serialize(tableData, options);
File.WriteAllText(outputPath, json);

Как извлечь данные из HTML-таблицы

  1. Загрузите исходный файл с помощью конструктора HTMLDocument .
  2. Выберите нужную таблицу методом QuerySelector() . Если документ содержит несколько таблиц, селектор по ID или классу надёжнее общего селектора table.
  3. Методом QuerySelectorAll() получите строки таблицы, а затем элементы <th> и <td> в каждой строке.
  4. Считайте и нормализуйте TextContent каждой ячейки, сохраняя исходный порядок строк и столбцов.
  5. Сериализуйте собранные значения с помощью JsonSerializer и сохраните итоговый JSON-файл.

Возможности и ограничения извлечения данных

  • Выбор нужной таблицы. Используйте #id, .class, main table или другой устойчивый CSS-селектор вместо автоматического выбора первой таблицы. Дополнительные варианты представлены на страницах CSS-селекторы и XPath-запросы .
  • Обработка одной или нескольких таблиц. Замените QuerySelector() на QuerySelectorAll("table"), если приложению нужно извлечь данные из всех таблиц документа.
  • Управление набором строк. Селектор tr считывает строки из <thead>, <tbody> и <tfoot>. Уточните его, если в результат не должен входить футер или секции таблицы требуется обрабатывать отдельно.
  • Учёт вложенных таблиц. Селектор потомков может также найти строки вложенной таблицы. Применяйте селекторы, связанные со структурой целевой таблицы, если вложенные таблицы должны образовывать отдельные наборы данных.
  • Выбор формата результата. DOM API предоставляет значения ячеек, а стандартные сериализаторы и файловые API .NET позволяют записать их в JSON, CSV, текст или прикладные структуры данных.

Документация по извлечению данных HTML-таблиц

В руководстве Извлечение HTML-таблиц на C# показано, как считывать локальные файлы и веб-страницы, сохранять заголовочные ячейки, извлекать ссылки и записывать значения таблиц в CSV или текст. Раздел Извлечение данных также рассматривает навигацию по DOM, CSS-селекторы, XPath и получение других видов содержимого веб-страниц.


Установка Aspose.HTML for .NET

Установите Aspose.HTML for .NET из NuGet с помощью .NET CLI:

dotnet add package Aspose.HTML

Также можно использовать интерфейс диспетчера пакетов NuGet или выполнить Install-Package Aspose.HTML в консоли диспетчера пакетов. Подробные инструкции приведены в руководстве по установке . Чтобы протестировать API без ограничений ознакомительной версии, запросите временную лицензию .


Вопросы об извлечении данных HTML-таблиц

1. Как включить заголовки таблицы в извлекаемые данные?

Считывайте элементы <th> и <td> в каждой строке. В примере используется селектор th, td, поэтому значения заголовков остаются на исходных позициях и не пропускаются в результате JSON.

2. Сохраняются ли пустые ячейки HTML-таблицы в JSON?

Да. Каждый выбранный элемент <th> или <td> создаёт одно строковое значение, а пустая ячейка после вызова TextContent.Trim() превращается в пустую строку. Благодаря этому сохраняется позиция ячейки в строке.

3. Можно ли сохранить извлечённые данные HTML-таблицы в CSV или Excel?

DOM-процесс возвращает значения ячеек и не задаёт формат результата. Запишите их в CSV стандартными файловыми API .NET, сериализуйте в JSON или передайте используемому в приложении компоненту электронных таблиц, если требуется книга Excel.

4. Разворачивает ли код извлечения атрибуты rowspan и colspan автоматически?

Нет. Атрибуты остаются доступными в соответствующих ячейках, но плоский список не отражает занятые позиции сетки. Добавьте нормализацию, если требуется развернуть объединённые ячейки в прямоугольный набор данных.

5. Можно ли извлекать из ячеек ссылки или HTML-разметку вместо обычного текста?

Да. Свойство TextContent возвращает только текст ячейки. Используйте InnerHTML, чтобы сохранить вложенную разметку, либо выберите элементы <a> внутри ячейки и считайте их текст и атрибуты href, если нужны адреса ссылок.

Связанные операции с HTML-таблицами

Создавайте и редактируйте таблицы или извлекайте таблицы вместе с разметкой с помощью руководств Aspose.HTML for .NET.