[FAQ CENTER トップ]
[Powershell FAQ トップへ]



【Powershell】指定したWebページのリンク先の一覧を取得するサンプルコード



更新日:2021/12/09


このページでは指定したWebページ内のリンクの一覧を取得するサンプルコードを紹介します。
インターネット上のURLを指定すると、そのURLのページ内(HTMLファイル)からリンクされている一覧を取得するということです。

WindowsPowershellの機能のみで実現が可能です。簡単に実現が可能です。

具体的には "Invoke-WebRequest " コマンドレットで Webページ (BasicHtmlWebResponseObject) を取得し、そのWebページ内のリンクを BasicHtmlWebResponseObject の Links プロパティで取得します。


参考:Invoke-WebRequest(Microsoft サイト)
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-webrequest?view=powershell-7.2

サンプルコード集

以下は Windows 10 環境におけるサンプルコードと実行結果です。

次の例では一つのWebページを取得して、そのWebページ内のリンクの一覧を取得しています。
Invoke-WebRequest メソッドにより一つのWebページが BasicHtmlWebResponseObject オブジェクトとして取得できます。
そのオブジェクトの Links プロパティでリンクの一覧を取得しています。


サンプルコード:


$WebPage = Invoke-WebRequest -Uri "http://tooljp.com/testlinks.html" -UseBasicParsing

$links = $WebPage.Links

$links | Select-Object -ExpandProperty href


実行結果:

/test01.html
/test02.html
/test03.html
/test04.html
/test05.html





次の例では PDF ファイルのリンクのみ取得しています。

サンプルコード:


$WebPage = Invoke-WebRequest -Uri "http://tooljp.com/testlinks.html" -UseBasicParsing

$links = $WebPage.Links

$links | Where-Object {$_.href -like "*.pdf"} | Select-Object -ExpandProperty href

実行結果:

/test01.pdf



次の例では 画像ファイルのリンクのみ取得しています。画像ファイルかどうかは拡張子で判定しています。拡張子はjpg,png,gif,jpeg,heicを指定しています。

サンプルコード:



$WebPage = Invoke-WebRequest -Uri "http://tooljp.com/testlinks.html" -UseBasicParsing

$links = $WebPage.Links

$links | Where-Object {(($_.href -like "*.jpg") -or ($_.href -like "*.png") -or ($_.href -like "*.gif") -or ($_.href -like "*.jpeg") -or ($_.href -like "*.heic"))} | Select-Object -ExpandProperty href

実行結果:

/test01.jpg
/test01.png
/test01.gif
/test01.jpeg
/test01.heic



次の例では $DownloadURL 変数で指定したページ内のリンクの一覧を一括で c:\temp にダウンロードします。


サンプルコード:

$DownloadURL="http://tooljp.com/testlinks.html"
$WWWName="http://tooljp.com/"

$WebPage = Invoke-WebRequest -Uri $DownloadURL -UseBasicParsing
$links = $WebPage.Links

foreach($l in $links){

$fileName = Split-Path $l.href -Leaf

$outFilePath = Join-Path "c:\temp\" $fileName

$ToDownload = $WWWName + $l.href

Invoke-WebRequest -Uri $ToDownload -OutFile $outFilePath
}

次の例では指定したWebページ内の画像ファイルを c:\temp にダウンロードします。

(*)img src="(ファイル名">で指定されている場合は取得できません。



サンプルコード:


$DownloadURL="http://tooljp.com/testlinks.html"
$WWWName="http://tooljp.com/"

$WebPage = Invoke-WebRequest -Uri $DownloadURL -UseBasicParsing
$links = $WebPage.Links

$links = $links | Where-Object {(($_.href -like "*.jpg") -or ($_.href -like "*.png") -or ($_.href -like "*.gif") -or ($_.href -like "*.jpeg") -or ($_.href -like "*.heic"))}

foreach($l in $links){

$fileName = Split-Path $l.href -Leaf

$outFilePath = Join-Path "c:\temp\" $fileName

$ToDownload = $WWWName + $l.href

Invoke-WebRequest -Uri $ToDownload -OutFile $outFilePath
}






[Powershell FAQ トップへ]
[FAQ CENTER トップ]


本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) tooljp.com 2007-2018