Як витягнути дані з HTML таблиці
Таблиці HTML широко використовуються в Інтернеті для відображення інформації. Вилучення даних із таблиць HTML є звичайним у веб-збиранні, аналізі даних і автоматизації. Під час створення парсерів часто необхідно видобувати дані з таблиці HTML і конвертувати їх у структурований формат, наприклад JSON, CSV або Excel. Давайте дослідимо, як витягти дані з HTML таблиці.
По-перше, переконайтеся, що у вашому проекті встановлено Aspose.HTML для .NET . Процес додавання цієї бібліотеки досить простий. Відкрийте менеджер пакетів NuGet, знайдіть Aspose.HTML і встановіть. Ви також можете використати таку команду з консолі диспетчера пакетів:
Встановіть Aspose.HTML для .NET
Install-Package Aspose.HTML
Видобуток даних таблиці з HTML за допомогою C#
Aspose.HTML для .NET
– це надійна бібліотека, яка надає потужний набір інструментів для аналізу та збору інформації з документів HTML. У наступному прикладі показано, як знайти всі елементи <table>
в документі HTML, витягти дані з таблиці та вивести їх у форматі JSON. Припустимо, що таблиця в HTML містить список тестів, де кожен тест має ідентифікатор, назву, коментар до нього та гіперпосилання на вміст тесту. Це інформація, яку ми хочемо вилучити з таблиці в наступному прикладі:
Код C# для вилучення даних із таблиці HTML
using Aspose.Html;
using System.IO;
using System.Linq;
using System.Text.Json;
using System.Collections.Generic;
...
// Open the document from which you want to extract table data
using var document = new HTMLDocument(Path.Combine(DataDir, "chapter-9.htm"));
{
// Check if there are any table elements in the document
var tables = document.GetElementsByTagName("table");
if (tables.Any())
{
var result = new List<Dictionary<string, string>>();
//var i = 0;
foreach (var table in tables)
{
// extract data from html table
var tbodies = table.GetElementsByTagName("tbody");
foreach (var tbody in tbodies)
{
if (tbody.Children.Length > 1)
{
foreach (var row in tbody.Children)
{
if (row.HasAttribute("id"))
{
//test row
var data = new Dictionary<string, string>();
data["Id"] = row.GetAttribute("id");
if (row.Children.Length > 0)
{
var td = row.Children[0];
if (td.Children.Length > 0)
{
var element = td.Children[0].TagName == "STRONG"
? td.Children[0].Children[0]
: td.Children[0];
var href = ((HTMLAnchorElement)element).Href;
data["Href"] = href;
data["TestName"] = Path.GetFileNameWithoutExtension(href);
}
}
data["TestComment"] = string.Join(" ",
row.Children[3].TextContent
.Split(new char[0], StringSplitOptions.RemoveEmptyEntries).ToList()
.Select(x => x.Trim()));
result.Add(data);
}
}
var json = JsonSerializer.Serialize(result);
Console.WriteLine(json);
}
}
}
}
else
{
// Handle the case where no tables are found
Console.WriteLine("No tables found in the document.");
}
}
Кроки для вилучення даних з HTML таблиці
Виконуючи ці кроки, ви можете витягти дані таблиці з HTML, такі як гіперпосилання та текстовий вміст, для різних цілей, включаючи аналіз даних або звітування.
- Використовуйте конструктор HTMLDocument() , щоб ініціалізувати документ HTML. Передайте до конструктора шлях вихідного HTML-файлу як параметр.
- Використовуйте метод
GetElementsByTagName(
"table"
) , щоб зібрати всі елементи<table>
. Метод повертає список елементів<table>
документа HTML. Зберігайте колекцію елементів таблиці в зміннійtables
. - Використовуйте метод LINQ
Any()
, щоб перевірити, чи є елементи<table>
в документі HTML. Це гарантує наявність таблиць для вилучення даних. - Перебирайте кожну таблицю, знайдену в документі, за допомогою циклу
foreach
:- Використовуйте метод
GetElementsByTagName("tbody")
, щоб отримати всі елементи<tbody>
(тіла таблиці). - У циклі пройдіть кожен елемент
<tbody>
для доступу до рядків даних, отриманих за допомогою іншого циклуforeach
. - Отримайте відповідні дані з кожного рядка на основі конкретних умов або атрибутів.
- Після вилучення даних з усіх рядків використовуйте метод
JsonSerializer.Serialize()
, щоб серіалізувати список словників, що містять витягнуті дані, у формат JSON.
- Використовуйте метод
- Використовуйте метод
Console.WriteLine()
для виведення серіалізованого JSON для відображення в консолі. - Якщо документ не містить таблиць, виведіть на консоль повідомлення про те, що таблиць не знайдено.
Aspose.HTML для .NET – це вдосконалена бібліотека аналізу HTML, яка дозволяє створювати, редагувати та конвертувати файли HTML, XHTML, MD, EPUB і MHTML. У розділі документації Data Extraction даних описано, як автоматично перевіряти, збирати та витягувати дані з веб-сторінок за допомогою Aspose.HTML для .NET. У статтях цього розділу ви дізнаєтесь, як переміщатися по HTML-документу та виконувати детальну перевірку його елементів, як зберегти веб-сайт або файл із URL-адреси, як витягти різні типи зображень із веб-сайтів тощо.
Генератор таблиць HTML – онлайн-програма
Aspose.HTML пропонує Генератор таблиць HTML – онлайн-програму для створення таблиць із настроюваними параметрами. Це безкоштовно та зрозуміло у використанні. Просто заповніть усі необхідні параметри та отримайте результат! Генератор таблиць HTML автоматично створює код таблиці HTML. Цей інструмент був розроблений, щоб дозволити вам отримати необхідну таблицю HTML і якомога швидше розмістити її на сайті.
Інші підтримувані функції бібліотеки C#
Використовуйте бібліотеку Aspose.HTML для .NET для аналізу та обробки документів на основі HTML. Зрозуміло, безпечно і просто!