C#:
HTMLの解析
方法:
.NETはHttpClient
でウェブページをフェッチするなど、HTML作業のための基本的なサポートを提供しますが、組み込みの総合的なHTMLパーサーを欠いています。そのため、ほとんどのC#開発者は、HtmlAgilityPackやAngleSharpのような人気の第三者ライブラリに頼ります。これらのライブラリはHTMLDOMの簡単なクエリ、操作、およびトラバーサルを可能にします。
HtmlAgilityPackを使用する
HtmlAgilityPackのインストール: まず、NuGetを通じてプロジェクトにHtmlAgilityPackパッケージを追加します。
Install-Package HtmlAgilityPack
サンプルコード: HTML文字列を解析し、すべての
<h1>
要素のタイトルを抽出します。using HtmlAgilityPack; using System; using System.Linq; class Program { static void Main(string[] args) { var html = @"<html> <body> <h1>Title 1</h1> <h1>Title 2</h1> </body> </html>"; var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var h1Tags = htmlDoc.DocumentNode.SelectNodes("//h1").Select(node => node.InnerText); foreach (var title in h1Tags) { Console.WriteLine(title); } } }
サンプル出力:
Title 1 Title 2
AngleSharpの使用
AngleSharpのインストール: NuGetを通じてプロジェクトにAngleSharpライブラリを追加します。
Install-Package AngleSharp
サンプルコード: HTMLドキュメントを読み込み、特定のクラスを持つ
div
要素をクエリします。using AngleSharp; using AngleSharp.Dom; using System; using System.Linq; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { var context = BrowsingContext.New(Configuration.Default); var document = await context.OpenAsync(req => req.Content("<div class='item'>Item 1</div><div class='item'>Item 2</div>")); var items = document.QuerySelectorAll(".item").Select(element => element.TextContent); foreach (var item in items) { Console.WriteLine(item); } } }
サンプル出力:
Item 1 Item 2
HTMLAgilityPackとAngleSharpはどちらもHTMLを解析するための強力なツールですが、特定のプロジェクト要件、パフォーマンスへの考慮、またはAPIデザインに対する個人的な好みに応じて選択が変わる場合があります。