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