Powershell経由でHTMLを読む。 Powershell/Sam’S Corner

Powershellを介したwebページからの情報の取得

PS1多くの場合、必要な情報は一つまたは多くのwebページで利用できますが、同じ情報を繰り返し処理する必要があります。 Powershellを介してこのような繰り返しタスクを自動化するには、HTMLデータを読み込んで解析する必要があります。 たとえば、最近Microsoft2010Sharepointフォーラムに質問が投稿されたとします:

私はSharePoint2010がどのようにページを持っているかが大好きです:http://Server:880/_admin/PatchStatus.aspx。 しかし、このページを見ると、各サーバーには約100のパッチがあります。 このリストをスクロールすると、いずれかのサーバーにパッチがないか、他のサーバーにないパッチがあるかどうかを確認することは困難です。 PatchStatusの情報をエクスポートする方法はありますか?中央管理者のaspxページをexcelスプレッドシートに変換しますか?

この演習の目的のために、このURLの投稿のタイトルを取得したいとしましょうhttps://superwidgets.wordpress.com/category/sql

まず、このページのHTMLコードを読んでみましょう:

HTML2

さて、Get-Memberにパイプして、取得したオブジェクトの種類とその使用可能なメソッドとプロパティを確認しましょう:

HTML3

私たちが持っているHTML HTMLオブジェクトのさまざまなプロパティを探索した後、いくつかの背景HTMLの知識を使って、探している情報がHTML

上記と同じ手法を使用して、”ParsedHTML”のようなHTMLオブジェクトのさらなるプロパティを調べることができます”

$HTML。ParsedHtml|Get-Member

これは、イベント、メソッド、およびプロパティのトンを持つHTMLDocumentClassオブジェクトであることを示しています:

HTML7

HTMLDocumentClassオブジェクトのイベント、メソッド、およびプロパティの部分的なリスト

ここで役立つのは、次の3つのメソッドです:

getElementById
getElementsByName
getElementsByTagName

webページから必要な情報を抽出する方法がわかったので、手元のwebページの詳細を見てみましょうhttps://superwidgets.wordpress.com/category/sql。 IEで開くたとえば、f12を押して下部にあるDOM explorerを開き、HTMLタグを展開し、タグの上にマウスを1つずつ移動します。 上部のIEペインでは、マウスを動かしている要素の背景色が変更されることに注意してください。 これにより、HTMLコード内のどの要素がHTMLページのどのテキストまたは領域を表すかを視覚的に示すことができます。

HTML6

私たちが興味を持っている記事のタイトルはで始まるものです見ることができます

<h2クラス=”エントリ-タイトル”>

これで、次の数行のPowershellスクリプトコードを記述して、タスクを完了できます:

# SuperwidgetsブログのSQLカテゴリに投稿タイトルを表示するスクリプト
#Sam Boutros–08/10/2014
URI URI= “https://superwidgets.wordpress.com/category/sql/ “
$HTML=Invoke-WebRequest-Uri$URI
(HTML HTML.ParsedHtml。getElementsByTagName(‘h2′)/Where{__.className-eq’entry-title’})。innerText

5行目では、”H2″タグでHTML要素を選択し、ClassName=”entry-title”をフィルタリングし、innertextプロパティを選択します。

出力は次のようになります:

HTML9

これは、私たちが取得するために設定した正確な記事のタイトルです。

この情報は、他のHTML、CSV、またはその他のレポートでさらに処理、記録、保存、または再パッケージ化することができます。.

コメントを残す

メールアドレスが公開されることはありません。