Аналіз даних 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-файл.
Можливості й обмеження вилучення даних з 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.