Як витягнути дані з 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, такі як гіперпосилання та текстовий вміст, для різних цілей, включаючи аналіз даних або звітування.

  1. Використовуйте конструктор HTMLDocument() , щоб ініціалізувати документ HTML. Передайте до конструктора шлях вихідного HTML-файлу як параметр.
  2. Використовуйте метод GetElementsByTagName("table") , щоб зібрати всі елементи <table>. Метод повертає список елементів <table> документа HTML. Зберігайте колекцію елементів таблиці в змінній tables.
  3. Використовуйте метод LINQ Any(), щоб перевірити, чи є елементи <table> в документі HTML. Це гарантує наявність таблиць для вилучення даних.
  4. Перебирайте кожну таблицю, знайдену в документі, за допомогою циклу foreach:
    • Використовуйте метод GetElementsByTagName("tbody"), щоб отримати всі елементи <tbody> (тіла таблиці).
    • У циклі пройдіть кожен елемент <tbody> для доступу до рядків даних, отриманих за допомогою іншого циклу foreach.
    • Отримайте відповідні дані з кожного рядка на основі конкретних умов або атрибутів.
    • Після вилучення даних з усіх рядків використовуйте метод JsonSerializer.Serialize(), щоб серіалізувати список словників, що містять витягнуті дані, у формат JSON.
  5. Використовуйте метод Console.WriteLine() для виведення серіалізованого JSON для відображення в консолі.
  6. Якщо документ не містить таблиць, виведіть на консоль повідомлення про те, що таблиць не знайдено.

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. Зрозуміло, безпечно і просто!