HTMLテーブルからデータを抽出する方法

HTML テーブルは、情報を表示するために Web 上で広く使用されています。 HTML テーブルからのデータの抽出は、Web スクレイピング、データ分析、自動化では一般的です。パーサーを構築する場合、多くの場合、HTML テーブルからデータを抽出し、JSON、CSV、Excel などの構造化形式に変換することが必要になります。 HTML テーブルからデータを抽出する方法を見てみましょう。

まず、プロジェクトに Aspose.HTML for .NET がインストールされていることを確認してください。 このライブラリのインストールプロセスは非常に簡単です。 NuGet パッケージ マネージャーを開き、Aspose.HTML を検索してインストールします。 パッケージ マネージャー コンソールから次のコマンドを使用することもできます。


Aspose.HTML for .NET をインストールする

Install-Package Aspose.HTML



C# を使用して HTML テーブルからデータを抽出する

Aspose.HTML for .NET は、HTML ドキュメントを解析して情報を収集するための強力なツール セットを提供する堅牢なライブラリです。次の例は、HTML ドキュメント内のすべての <table> 要素を検索し、テーブル データを抽出して、JSON 形式で出力する方法を示しています。 HTML のテーブルにテストのリストが含まれており、各テストに ID、名前、コメント、およびテストのコンテンツへのハイパーリンクがあるとします。これは、次の例のテーブルから抽出したい情報です。


HTML テーブルからデータを抽出する C# コード

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> 要素を収集します。このメソッドは、HTML ドキュメントの <table> 要素のリストを返します。テーブル要素のコレクションを tables 変数に保存します。
  3. LINQ Any() メソッドを使用して、HTML ドキュメントに <table> 要素があるかどうかを確認します。これにより、データを抽出するテーブルが確実に存在します。
  4. foreachループを使用して、文書内にある各テーブルを反復処理します。
    • GetElementsByTagName("tbody") メソッドを使用して、すべての <tbody> 要素 (テーブル本体) を取得します。
    • ループ内で、各 <tbody> 要素を反復処理し、別の foreach ループを使用して取得したデータの行にアクセスします。
    • 特定の条件または属性に基づいて各行から関連データを抽出します。
    • すべての行からデータを抽出した後、JsonSerializer.Serialize() メソッドを使用して、抽出されたデータを含む辞書のリストを JSON 形式にシリアル化します。
  5. Console.WriteLine() メソッドを使用して、コンソールに表示するシリアル化された JSON を出力します。
  6. 文書に表が含まれていない場合は、表が見つからなかったことを示すメッセージをコンソールに出力します。

Aspose.HTML API の詳細については、 ドキュメント ガイドを参照してください。 Aspose.HTML for .NET は、HTML、XHTML、MD、EPUB、および MHTML ファイルの作成、編集、変換を可能にする高度な HTML 解析ライブラリです。 Data Extraction ドキュメント セクションでは、Aspose.HTML for .NET を使用して Web ページからデータを自動的に検査、収集、抽出する方法について説明します。このセクションの記事では、HTML ドキュメントを操作してその要素を詳細に検査する方法、URL から Web サイトまたはファイルを保存する方法、Web サイトからさまざまな種類の画像を抽出する方法などを学びます。



HTML テーブル ジェネレーター – オンライン アプリ

Aspose.HTML は、カスタマイズ可能なオプションを備えたテーブルを作成するためのオンライン アプリケーションである HTML テーブルジェネレータ を提供します。無料で使用することができます。必要なオプションをすべて入力するだけで結果が得られます。 HTML テーブル ジェネレーターは、HTML テーブル コードを自動的に作成します。このツールは、必要な HTML テーブルを取得して、できるだけ早くオンラインにできるように設計されています。

サポートされているその他の C# ライブラリの機能

Aspose.HTML for .NET ライブラリを使用して、HTML ベースのドキュメントを解析および操作します。明確、安全、そして簡単!