Извлечение данных 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-таблицы
- Загрузите исходный файл с помощью конструктора
HTMLDocument. - Выберите нужную таблицу методом
QuerySelector(). Если документ содержит несколько таблиц, селектор по ID или классу надёжнее общего селектораtable. - Методом
QuerySelectorAll()получите строки таблицы, а затем элементы<th>и<td>в каждой строке. - Считайте и нормализуйте
TextContentкаждой ячейки, сохраняя исходный порядок строк и столбцов. - Сериализуйте собранные значения с помощью
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.