Аналіз даних 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-файл.

Можливості й обмеження вилучення даних з HTML-таблиць

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

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

Перегляньте Вилучення HTML-таблиць у C# для прикладів читання локальних файлів і URL, збереження клітинок заголовків, вилучення посилань і запису значень у 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.