適材適所

PowerShellやVBAなどプログラミング系の話多めで

【PowerShell】ウェブページのリンク一覧を色んな形で取得する【Invoke-WebRequest】

PowerShellを使って簡単にウェブページのリンク一覧を取得する方法です。

あくまで簡単なものですので、悪しからず。

Invoke-WebRequestコマンドレットを使います。

URLはyahooさんを使わせていただきました。

$url='https://www.yahoo.co.jp/'のところを好きなURLに変更して実行してみてください。

innerTextがリンク文字列で、hrefがリンク先のURLです。

単純にコンソールに表示

シンプルにコンソールに表示します。

 
$url='https://www.yahoo.co.jp/'
$request=Invoke-WebRequest -Uri $url
$request.Links|Select-Object innertext,href

f:id:shinmai_papa:20210827235012p:plain

hrefが切れてしまっているときは、Format-Listコマンドレットに渡してもいいですね。

 
$url='https://www.yahoo.co.jp/'
$request=Invoke-WebRequest -Uri $url
$request.Links|Select-Object innertext,href|Format-List

f:id:shinmai_papa:20210827235022p:plain

GUIでかっこよく出力する

Out-GridViewコマンドレットに渡すことで小粋なウィンドウを出してくれるので、コナレ感を出すことができます。

 
$url='https://www.yahoo.co.jp/'
$request=Invoke-WebRequest -Uri $url
$request.Links|Select-Object innertext,href|Out-GridView-Title 'リンク一覧だぞ'

f:id:shinmai_papa:20210827235027p:plain

ワンライナーで書いてみる

カッコよくワンライナーで書いてみます。

 
(Invoke-WebRequest -Uri 'https://www.yahoo.co.jp/').links|Select-Object innertext,href

CSV形式で出力する

みんな大好き、CSV形式です。

 
$url='https://www.yahoo.co.jp/'
$request=Invoke-WebRequest -Uri $url
$request.Links|Select-Object innertext,href|Export-Csv -Path .\links.csv -Encoding Default -NoTypeInformation

f:id:shinmai_papa:20210827235017p:plain

json形式で出力する

まさかのjson形式。

 
$url='https://www.yahoo.co.jp/'
$request=Invoke-WebRequest -Uri $url
$request.Links|Select-Object innertext,href|ConvertTo-Json

f:id:shinmai_papa:20210827235033p:plain

終わりに

PowerShellを使って色んなパターンでリンク一覧を取得してみました。

他にもいろいろな出力の形がありますが、きりがないのでこれくらいにしておきます。

リンクの調査など、ちょっとしたときに使ってみてください。

ここまでお読みいただき、ありがとうございました。