PowerShellでキャッシュレス決済の地図より加盟店一覧をスクレイピング

# 座標からJSON取得
$response = Invoke-RestMethod -Uri 'https://api.cashless.go.jp/location/' -Method Get -Body @{ 'lat'=35.681236; 'lng'=139.76712499999996; 'limit'=30; 'd'=15000; 'q'=''; 'b'=''; 'c'=''; 'r'=''; 'p'='';}

# JSONから店番号を取得、店番号から店情報を取得し、CSV変換
$response.items | Get-Member -MemberType Properties | Select-Object -ExpandProperty Name | ForEach-Object {$response.items.($_)} | ForEach-Object { (Invoke-RestMethod ('https://api.cashless.go.jp/location/' + $_))} | Export-Csv .\output.csv -NoTypeInformation -Append -Encoding UTF8
# このオブジェクトの
$response.items |

# プロパティから
Get-Member -MemberType Properties |

# プロパティ名を取得
Select-Object -ExpandProperty Name |

# プロパティ名を使って変数でメンバー名を指定
ForEach-Object {$response.items.($_)} |

# 中のデータからお店番号からJSON取得しPSCustomObjectに変換
ForEach-Object { (Invoke-RestMethod ('https://api.cashless.go.jp/location/' + $_))} |

# CSVに追記書き出し
Export-Csv .\output.csv -NoTypeInformation -Append -Encoding UTF8

docs.microsoft.com

mseeeen.msen.jp

powershell.web.fc2.com