Извлечение таблиц из HTML-файлов с помощью .NET API
Aspose.HTML for .NET
загружает HTML-файл в объект
HTMLDocument
и предоставляет доступ к таблицам через DOM. Приложение C# может выбрать один или все элементы <table>, получить их OuterHTML и создать отдельный HTML-документ с полной разметкой каждой таблицы.
Извлечение всех таблиц из HTML-файла на C#
Следующий пример выбирает все таблицы в файле input.html и сохраняет каждую в отдельный пронумерованный HTML-файл. Базовый URI исходного документа передаётся каждому выходному документу, чтобы при обработке таблицы относительные адреса ресурсов разрешались от исходного расположения.
Код C# для извлечения HTML-таблиц
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каждой таблицы. - Создайте новый
HTMLDocumentиз извлечённой разметки и базового URI исходного документа. - Вызовите
Save()с уникальным именем выходного файла для каждой извлечённой таблицы.
Возможности и ограничения извлечения HTML-таблиц
- Выбор области извлечения. Используйте
table, чтобы выбрать все таблицы, или более точный селектор, например#price-table,.results tableлибоmain table, чтобы ограничить результат. - Сохранение разметки таблицы. Свойство
OuterHTMLвключает выбранный элемент<table>, его атрибуты, строки, ячейки и вложенное содержимое. - Сохранение контекста разрешения ресурсов. Передача
document.BaseURIпозволяет интерпретировать относительные URL внутри извлечённой разметки относительно исходного документа во время обработки. - Отдельная обработка стилей. Встроенные стили и атрибуты
styleвнутри таблицы сохраняются в её разметке. Правила из элемента<head>исходного документа и внешних таблиц стилей не копируются в документ, содержащий только таблицу. - Разделение разметки и данных. Этот процесс сохраняет каждый выбранный элемент
<table>вместе с его разметкой. Чтобы получить значения ячеек для JSON, CSV или другого формата, используйте руководство Извлечение данных HTML-таблиц .
Документация по извлечению HTML-таблиц
В руководстве Извлечение HTML-таблиц на C# рассмотрены выбор таблиц, обработка строк и ячеек, извлечение ссылок и примеры результатов. Раздел Извлечение данных описывает дополнительные сценарии навигации по 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. Можно ли извлечь все таблицы из одного HTML-файла?
Да. Метод QuerySelectorAll("table") возвращает все совпадающие таблицы в порядке документа. Переберите результат и задайте уникальное имя выходного файла, если каждую таблицу нужно сохранить отдельно.
2. Как извлечь только одну определённую HTML-таблицу?
Используйте QuerySelector() с устойчивым селектором по ID, классу или структуре, например [id="price-table"] либо main table. Метод вернёт первую совпадающую таблицу вместо всех элементов <table>.
3. Сохраняет ли извлечённая HTML-таблица оформление CSS?
Встроенные стили и атрибуты style внутри таблицы сохраняются в OuterHTML. Правила CSS из элемента <head> исходного документа или внешней таблицы стилей нужно скопировать либо подключить отдельно, чтобы автономный файл выглядел так же.
4. Можно ли извлечь данные таблицы в CSV или JSON вместо сохранения HTML-разметки?
Да, но для этого используется другой процесс. Переберите строки, считайте значения <th> и <td> и передайте их средству записи CSV или сериализатору JSON. Полный пример приведён в руководстве
Извлечение данных HTML-таблиц
.
5. Извлекаются ли вложенные HTML-таблицы отдельно?
Общий селектор table находит как внешние, так и вложенные таблицы. Используйте более точный селектор, если вложенная таблица должна остаться только внутри родительской и не должна записываться в отдельный файл повторно.
Связанные операции с HTML-таблицами
Создавайте и редактируйте таблицы или извлекайте значения ячеек с помощью руководств Aspose.HTML for .NET.