Извлечение таблиц из 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

  1. Загрузите исходный файл с помощью конструктора HTMLDocument .
  2. Выберите элементы таблиц методом QuerySelectorAll("table") .
  3. Переберите возвращённые элементы и получите OuterHTML каждой таблицы.
  4. Создайте новый HTMLDocument из извлечённой разметки и базового URI исходного документа.
  5. Вызовите 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.