[注記]本記事はChatGptの回答備忘録として記載しております。
PowerShell では、XPath を使用して HTML ドキュメント内の特定の要素を検索し、その InnerText を取得することができます。ここでは HtmlAgilityPack ライブラリを使用して、XPath に基づいて HTML を解析できます。
まず、HtmlAgilityPack をインストールする必要があります。以下の手順でインストールできます。
PowerShell で以下のコマンドを実行して HtmlAgilityPack をインストールします。
Install-Package HtmlAgilityPack
次に、以下のスクリプトを使用して、XPath を用いて HTML 要素を検索し、その InnerText を取得します。
# HtmlAgilityPackライブラリをインポート
Add-Type -Path ".\lib\HtmlAgilityPack.dll"
# HTMLファイルのパスを指定
$htmlFilePath = ".\MailContent~.html"
# HTMLファイルを読み込む
$htmlContent = Get-Content -Path $htmlFilePath -Raw
# HtmlDocumentオブジェクトを作成し、HTMLコンテンツをロード
$htmlDoc = New-Object HtmlAgilityPack.HtmlDocument
$htmlDoc.LoadHtml($htmlContent)
# XPathを使用して特定の要素を検索 (例: //div)
$nodes = $htmlDoc.DocumentNode.SelectNodes("//tr")
# 各ノードのInnerTextを取得して表示
foreach ($node in $nodes) {
Write-Output $node.InnerText
}
このスクリプトのポイントは以下の通りです。
HtmlAgilityPack ライブラリをインポートします。
ローカルの HTML ファイルを読み込み、その内容を HtmlDocument オブジェクトにロードします。
XPath を使用して特定の要素を検索します(例://div はすべての div 要素を検索します)。
各要素の InnerText を取得して表示します。
XPath クエリを変更することで、他の要素や属性に基づいた検索が可能です。例えば、特定のクラスを持つ div 要素を検索する場合は、以下のように XPath クエリを変更します。
# クラスが特定の値を持つdiv要素を検索
$nodes = $htmlDoc.DocumentNode.SelectNodes("//div[@class='specific-class']")
これにより、class 属性が specific-class であるすべての div 要素を検索し、その InnerText を取得できます。