更新日: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
次の例では一つの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