HTMLのTABLEをCSV形式で保存するスクリプト

コンピュータ
前回CSVファイルをHTMLのTABLEに変換するスクリプトを作りました。
今回はWebページ内のTABLEをCSVファイルとして保存するスクリプトを作りました。
CSVファイルをHTMLのTABLE文字列に変換するスクリプト
Import-Csvで出力されるオブジェクトは配列でCSVの行をPSObjectのプロパティでCSVの項目名と値を表現しています。 それをみてHTMLのTABLEを連想したので変換するスクリプトを作ってみました。 スクリプト # ...

スクリプト

#
# HTMLのTableをCSVファイルに変換する
#
# 

function Table2CSV
{
param (
$uristr = "https://maywork.net/computer/hdd-capa-price-seagate-barracuda/",
$path = "h:\script\Table2CSV.csv"
)

$res = Invoke-WebRequest -Uri $uristr
$table = $res.ParsedHtml.getElementsByTagName("table") | select -First 1

# CSV用配列
$csv = @()

# 項目名の配列
$names = @()

$table.getElementsByTagName("tr") | % {
$rec = $_
if ($rec.rowIndex -eq 0) {
$rec.getElementsByTagName("th") | % {
$names += $_.innerText
}
} else {

# 値の配列
$values = @()
$rec.getElementsByTagName("td") | % {
$values += $_.innerText
}

$obj = New-Object psobject
for($i=0; $i -lt $values.Length; $i++) {
$obj | Add-Member $names[$i] $values[$i]
}
$csv += $obj
}
}

# 書き込み(エクスポート)
$csv | Export-CSV -Path $path -Encoding UTF8 -NoTypeInformation 

}
Table2CSV

HTML内で一番最初のTABLEを取得するようにハードコーディングしてあります。
このスクリプトは当ブログのページから取得をしているので上手く結果がでますが、実際は目的のページごとにコーディングする必要があります。

入力(Webページ)

HDDの容量当たりの単価を調べてみた【Seagate BarraCuda】
はじめに システムドライブはSSDにとって代わられた感のあるHDDですが、データの保存用としてはまだまだ主力のメディアです。 個人的には長期のデータ保存メディアとしてもHDDを活用しています。しかし近年のHDDは丈夫で長持ちする...

結果

"容量","価格","単価","順位"
"4TB","8402円","2.1005円","1位"
"6TB","13154円","2.19233円","2位"
"8TB","18014円","2.25175円","3位"
"3TB","7890円","2.63円","4位"
"2TB","6379円","3.1895円","5位"
"10TB","43178円","4.3178円","6位"
"12TB","64498円","5.3748円","7位"
"1TB","5378円","5.378円","8位"
"14TB","82694円","5.90671円","9位"
"500GB","4979円","9.958円","10位"

コメント