.NET ヘルプ

Html Agility Pack C# (開発者向けの動作方法)

イントロダクション

C#開発の世界では、ドキュメント内容を動的に管理および操作する必要性が広く認識されています。 開発者は一般的に、PDFレポートの作成やウェブページからのデータ抽出などの活動を自動化するために、強力なライブラリに依存しています。 この記事では、C#におけるIronPDFとHTML Agility Packの簡単な統合について探求し、これらのライブラリを使用してPDF文書を簡単に作成し、HTMLテキストを読み取る方法を示すコード例を提供します。

一方、IronPDFはPDFファイルを扱うための機能豊富な.NETライブラリです。 IronPDFを使用すると、開発者はHTMLコンテンツ、URL、または生データから動的にPDFファイルを生成できるため、ドキュメント作成、レポート、およびデータ視覚化のための価値あるツールとなります。

.NETアプリケーションでのドキュメント生成を効率化するために、この記事ではIronPDFとHTML Agility Packを接続する方法を見ていきます。これらの技術を組み合わせることで、プログラマーはリモートシステムとの連携、ダイナミックなPDFページの生成、ネットワーク接続によるデータの取得が可能になり、プログラムの生産性と拡張性が向上します。

C#でHtmlAgilityPackを使用する方法

  1. 新しいC#プロジェクトを作成します。

  2. ライブラリHtmlAgilityPackをインストールする。

  3. 名前空間をインポートします。 オブジェクトを作成します。

  4. URLからデータをインポートし、HTMLを解析します。

  5. 必要なデータを取得し、オブジェクトを破棄します。

HtmlAgilityPackの概要

HTML Agility Pack は、.NET開発者向けの多用途で強力なHTML解析ライブラリです。 APIの幅広いコレクションの助けを借りて、開発者はHTMLドキュメントからデータを簡単にナビゲート、変更、および抽出することができます。 HTML Agility Packは、経験レベルに関係なくすべての開発者にとってHTMLコンテンツをプログラムで扱うことを容易にします。

HTML Agility Packが特殊である理由は、構造が悪いまたは誤ったHTMLを優しく処理できる能力にあります。 それは、HTMLマークアップの品質が変動し得るオンラインスクレイピング操作に最適です。なぜなら、最も悪く構造されたHTMLでも解析可能な寛容なパーシングアルゴリズムを使用しているからです。

HtmlAgilityPackの機能

HTML解析

HTML Agility Packが提供する強力なHTMLパーシング機能により、開発者はファイル、URL、文字列など、さまざまなソースからHTMLドキュメントを読み込むことができます。 寛容なパーシングアプローチを採用しているため、形式が悪い、または誤ったHTMLを優雅に処理でき、HTMLマークアップの品質が異なるウェブスクレイピング活動に適しています。

DOM操作(DOM Sōsa)

HTMLドキュメントオブジェクトモデル(DOM)の構造を探索、閲覧、および操作するために、HAPは使いやすいAPIを提供します。 HTML要素、属性、およびテキストノードはすべて、開発者によってプログラム的に追加、削除、または変更することができ、動的なHTMLコンテンツの操作が可能です。

XPathおよびLINQサポート

HTMLコンポーネントを選択およびクエリするために、HTML Agility PackはLINQ(言語統合クエリ)とXPath構文検索の両方をサポートしています。 HTMLドキュメント内のアイテムをその属性、タグ、または階層に従って選択するために、XPath式クエリは強力で理解しやすい構文を提供します。 LINQを使用してC#で作業することに慣れている開発者にとって、LINQクエリは他の.NETコンポーネントとのスムーズな統合を容易にするお馴染みのクエリ構文を提供します。

HtmlAgilityPackを使い始める

C#プロジェクトでのHtmlAgilityPackのセットアップ

HtmlAgilityベース・クラス・ライブラリは1つのバンドル・パッケージになっており、NuGetにインストールすることで利用可能になり、C#プロジェクトで使用できるようになります。 HTMLドキュメントやHTML URLからHTMLパーサーとCSSセレクターを提供します。

WindowsコンソールとフォームでHtmlAgilityPackを実装する

多くのC#アプリケーションタイプ、例えばWindowsフォーム(WinForms)やWindowsコンソールは、HtmlAgilityPackを実装しています。 実装はフレームワークによって異なるものの、基本的な考え方は変わりません。

Html Agility Pack C#(開発者のための動作方法):図1 - NuGetパッケージマネージャーを使用してHtmlAgilityPackを検索し、インストールする

HtmlAgilityPack C#例

C#開発者のツールボックスで、HTMLドキュメントをナビゲートし、処理し、操作するための最も重要なツールの1つがHTML Agility Pack (HAP)です。 HTMLページからのデータ抽出は、要素の整然とした木構造のように機能する使いやすいAPIによって簡単になります。 簡単なコード例を見て、どのように使用するかを説明しましょう。

using HtmlAgilityPack;

// Load HTML content from a file or URL
HtmlWeb web = new HtmlWeb();
var doc = web.Load("https://ironpdf.com/");

// Select specific html nodes and parse html string
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']");

// Iterate through selected nodes and extract content
foreach (HtmlNode node in nodes)
{
    Console.WriteLine(node.InnerText);
}
Console.ReadKey();
using HtmlAgilityPack;

// Load HTML content from a file or URL
HtmlWeb web = new HtmlWeb();
var doc = web.Load("https://ironpdf.com/");

// Select specific html nodes and parse html string
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']");

// Iterate through selected nodes and extract content
foreach (HtmlNode node in nodes)
{
    Console.WriteLine(node.InnerText);
}
Console.ReadKey();
Imports HtmlAgilityPack

' Load HTML content from a file or URL
Private web As New HtmlWeb()
Private doc = web.Load("https://ironpdf.com/")

' Select specific html nodes and parse html string
Private nodes As HtmlNodeCollection = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']")

' Iterate through selected nodes and extract content
For Each node As HtmlNode In nodes
	Console.WriteLine(node.InnerText)
Next node
Console.ReadKey()
$vbLabelText   $csharpLabel

この例では、HTML Agility Packを使用してURLからHTMLノードを読み込みます。 HTMLは解析と操作のためにvar docに読み込まれます。 コンテンツを抽出するために、プログラムはまずHTMLドキュメントのルートノードを特定し、次にXPathクエリを使用してドキュメント内のノードを特定します。 上記のコードから、文字列HTMLデータからクラスproduct-homepage-headerを持つdiv要素を特別に選択し、選択された各ノードの内部テキストがコンソールに出力されます。

Html Agility Pack C#(開発者向け作業方法):図2 - product-homepage-header クラスの内部テキストを取得して抽出されたテキスト

HtmlAgilityPack の操作

HTML変換

開発者はHTML Agility Packを使用してHTMLテキストに対して様々な変換や操作を行うことができます。 これは、HTMLドキュメントのDOM階層を再編成することに加えて、テキストノード、要素、および属性の追加、削除、または変更などの操作をカバーします。

拡張性

HAPは拡張可能に設計されているため、プログラマーは新しい機能や動作を追加して、その機能を高めることができます。 提供されたAPIを使用して、開発者は独自のHTMLパーサー、フィルター、または操作を設計し、HAPをそれぞれのニーズやユースケースに合わせてカスタマイズできます。

パフォーマンスと効率

大規模なHTMLテキストは、速度と効果を最大限に発揮するように調整されたHTML Agility Packのアルゴリズムとデータ構造によってうまく処理できます。 メモリ使用量と処理のオーバーヘッドを削減することで、迅速かつ応答性の高いHTMLコンテンツの解析と操作を実現します。

IronPdfとHtmlAgilityPackの統合

HtmlAgilityPackと連携したIronPDFの使用

HTML Agility PackとIronPDF for PDF Conversionを組み合わせることで、ドキュメント管理およびレポート作成の可能性は無限です。 開発者は、HTML解析のためのHTML Agility PackとPDF変換のためのIronPDF Documentationを利用することで、動的なオンラインコンテンツからPDFドキュメントの作成を容易に自動化できます。

IronPDF をインストール

  • Visual Studio プロジェクトを起動します。
  • 「ツール」 > 「NuGet パッケージ マネージャー」 > 「パッケージ マネージャー コンソール」を選択します。
  • パッケージマネージャーコンソールに以下のコマンドを入力してください:
Install-Package IronPdf
  • 代替として、ソリューション用のNuGetパッケージマネージャーを使用してIronPDFをインストールすることができます。
  • IronPDFパッケージの検索結果を閲覧し、選択してから「インストール」ボタンをクリックできます。 Visual Studioは、インストールとダウンロードを自動で行います。

    Html Agility Pack C#(開発者向け使用方法):図3 - NuGet パッケージ マネージャーの検索バーで「IronPdf」を検索して、ソリューションのための Manage NuGet Package を使用して IronPDF をインストールした後、プロジェクトを選択し、インストールボタンをクリックします。

  • IronPDFパッケージおよびプロジェクトに必要な依存関係は、NuGetによってインストールされます。
  • インストール後、IronPDFはあなたのプロジェクトで使用できます。

NuGetウェブサイトからインストールする

IronPDFの機能、互換性、その他のダウンロードオプションについて詳しく知るには、NuGetのウェブサイトでIronPDF NuGet Package Informationを参照してください。

DLL を使用してインストール

代替案として、IronPDFのDLLファイルを使用してプロジェクトに直接統合することができます。 DLLを含むZIPファイルを取得するには、このIronPDF DLLダウンロードをクリックしてください。 解凍後、DLLをプロジェクトに組み込んでください。

ロジックの実装

HTML Agility Pack (HAP) と IronPDF の両方のライブラリの機能を統合することで、C# で HTML 情報を読み取り、PDF ドキュメントを即座に生成することができます。 実装の手順は以下にリストされており、各手順を説明するサンプルコードが含まれています。

  1. HTML Agility Packを使用してHTMLコンテンツを読み込む: ファイル、文字列、URLなどのソースからHTML素材を読み込むには、HTML Agility Packを使用します。 このフェーズでは、HTMLドキュメントが解析され、操作可能なHTMLドキュメントオブジェクトが作成されます。

  2. 抽出したいコンテンツ: HTMLドキュメントから特定のコンテンツを選択して抽出するには、HTML Agility PackをXPathまたはLINQクエリと共に使用します。 これは、プロパティ、タグ、または階層構造に従って要素を選択することを意味します。

  3. IronPDFを使用してHTMLをPDFに変換: 取得したHTMLコンテンツからPDFドキュメントを作成するには、IronPDFを使用します。 IronPDFは、スタイルとレイアウトを維持しながら、HTML素材を簡単にPDFフォーマットに変換します。

  4. オプション: PDF出力をカスタマイズする: 必要に応じて、IronPDFを使用してヘッダー、フッター、ページ番号、その他の動的コンポーネントを追加し、PDF出力をカスタマイズします。 このステップは、生成されるPDFドキュメントの外観と使いやすさを向上させます。

  5. PDFドキュメントを保存またはストリーム: 作成されたPDFドキュメントは、クライアントやブラウザに直接ストリームしてダウンロードするか、ファイルに保存することができます。IronPDFは、異なる出力ストリームにPDFファイルを保存する方法を提供します。
using HtmlAgilityPack;        
StringBuilder htmlContent = new StringBuilder();

// Load HTML content from a file or URL
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://ironpdf.com/");
// Select specific elements using XPath or LINQ
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']");

// Iterate through selected nodes and extract content
foreach (HtmlNode node in nodes)
{
    htmlContent.Append(node.OuterHtml);
    Console.WriteLine(node.InnerText);
}
// Convert HTML content to PDF using IronPDF
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString());
// Save PDF to file
PDF.SaveAs("output.pdf");
Console.WriteLine("PDF generated successfully!");
Console.ReadKey();
using HtmlAgilityPack;        
StringBuilder htmlContent = new StringBuilder();

// Load HTML content from a file or URL
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://ironpdf.com/");
// Select specific elements using XPath or LINQ
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']");

// Iterate through selected nodes and extract content
foreach (HtmlNode node in nodes)
{
    htmlContent.Append(node.OuterHtml);
    Console.WriteLine(node.InnerText);
}
// Convert HTML content to PDF using IronPDF
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString());
// Save PDF to file
PDF.SaveAs("output.pdf");
Console.WriteLine("PDF generated successfully!");
Console.ReadKey();
Imports HtmlAgilityPack
Private htmlContent As New StringBuilder()

' Load HTML content from a file or URL
Private web As New HtmlWeb()
Private doc As HtmlDocument = web.Load("https://ironpdf.com/")
' Select specific elements using XPath or LINQ
Private nodes As HtmlNodeCollection = doc.DocumentNode.SelectNodes("//h1[@class='product-homepage-header product-homepage-header--ironpdf']")

' Iterate through selected nodes and extract content
For Each node As HtmlNode In nodes
	htmlContent.Append(node.OuterHtml)
	Console.WriteLine(node.InnerText)
Next node
' Convert HTML content to PDF using IronPDF
Dim Renderer = New IronPdf.HtmlToPdf()
Dim PDF = Renderer.RenderHtmlAsPdf(htmlContent.ToString())
' Save PDF to file
PDF.SaveAs("output.pdf")
Console.WriteLine("PDF generated successfully!")
Console.ReadKey()
$vbLabelText   $csharpLabel

IronPDFを使用した変換を訪れて、コード例について詳しく学んでください。

Html Agility Pack C#(開発者向けの動作方法):図4 - IronPDF ホームページ

実行結果は以下に示されています:

上記のコードからの出力例

結論

HTML Agility PackとIronPDFをC#でスムーズに統合することで、HTMLデータの解析やPDFレポートの作成など、開発者はドキュメントの内容を簡単に管理および変更することができます。 開発者は、IronPDFのPDF生成機能をHTML Agility Packの解析機能と組み合わせることにより、文書に関連する操作を簡単かつ正確に自動化することができます。 これら二つのライブラリを組み合わせることで、動的レポートの作成やウェブページからのデータ取得において強力なC#ドキュメント管理ソリューションを提供します。

永続ライセンス、1年間のソフトウェアメンテナンス、およびライブラリアップグレードが$749 Liteバンドルにすべて含まれています。 IronPDF は、時間的および再配布の制限付きで無料ライセンスを提供します。 試用期間中、ユーザーは透かしを表示せずにソリューションを評価することができます。 費用とライセンスについての詳細は、IronPDFのライセンス情報をご覧ください。 Iron Softwareのライブラリについて詳しくは、製品情報ページをご覧ください。

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
docfx C#(開発者向けの使用方法)
次へ >
C# 継続(開発者にとっての働き方)