【PowerAutomate】webページからデータを抽出しCSVファイル化してみる

# ➊ はじめに
**Power Automate Desktop**は、RPA (Robotic Process Automation)です。win11に正式採用になるとのことで、win10のうちに**Power Automate for Desktop**がどんなものかちょっと使ってみました。

# ➋ どんな感じ
**Power Automate for Desktop**を使用して、Qiitaのwebページから、csvファイルのデータを作成してみたいと思います。取得するのは、TOPページにある**①記事アドレス**、**②記事題名**、**③LGTM数**にしました。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/967cc261-ac2e-d219-62c0-740900f39ca3.png">

※**Power Automate Desktop** と **Power Automate for Desktop**では、少々メニューや文言が変わっているようですが、初歩的なことしかやっていないので、似たような感じでできると思います。win11の方もトライしてみてください。

# ➌ インストール
以下のURLから、**Power Automate for Desktop**をインストールします。

https://powerautomate.microsoft.com/ja-jp/desktop/

ホームページの下方に「`Download Power Automate for desktop free`」となっているボタンを押下して、インストーラをダウンロードしてください。ダウンロード後、アプリをインストールしてください。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/ece32021-d4e8-f9ee-91b6-6cb98f0ec1e9.png">

# ➍ アプリ準備
まずは、アプリの準備をします。
## (1) アプリ起動
**Power Automate for Desktop**アプリを起動します。
起動したら、「`＋新しいフロー`」を押下。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/e219effd-36f0-c275-876b-b28e0f67f984.png">

## (2) フロー名
フローを作成します。まずはフロー名を付けます。
今回は、フロー名を適当に「`qiita`」としておきます。後でも変更できます。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/4cf9ffe4-d799-ec0d-a942-f5627202b1a6.png">
「`作成`」を押下すると自動的にフロー編集画面になります。

## (3) フロー編集
これがフロー編集画面です。ここにアクションを追加するなどして、自動実行の命令を入れフローを完成させます。ちなみに、フローとは処理の流れという意味です。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/72a363f4-cf48-fd19-ae37-9f5703fb69b3.png">

## (4) ブラウザ拡張機能
ブラウザからデータを抽出する場合などは、拡張機能が必須になります。Chrome、Edge、Firefoxなど、**ブラウザ種類毎に拡張機能をインストールする必要があります**。

※IEは、ブラウザ拡張機能のインストールは不要です。
※既にブラウザ拡張機能を一度インストールしている場合は、この工程はスキップできます。
※拡張機能等の詳細は、👉「[ここ](https://docs.microsoft.com/ja-jp/power-automate/desktop-flows/using-browsers)」をご参照ください。

[`ツール`]－[`ブラウザー拡張機能`]－[`Microsoft Edge`]を押下。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/821b6765-925c-c123-3aef-a98689ffd5da.png">

ブラウザ拡張機能のホームページが開きます。
インストールボタンを押下。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/08a76305-a073-6c75-4e24-b39806f3cf79.png">

ブラウザ拡張機能がインストールできました。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/56ef501b-0962-a8e1-6f63-814a8089397d.png">

# ➎ フロー作成
今回ブラウザは**Edge**で実施します。Chrome、Firefox、IEを使っている場合は、適宜読み替えてください。

## (1) 新しい Microsoft Edge を起動
### ■ アクション
左上の**アクション**から、[`ブラウザー自動化`]－[`新しい Microsoft Edge を起動する`]をMain配下へドラッグアンドドロップします。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/a678cdad-84c8-3545-7201-7767a454e614.png">

### ■ パラメータ設定
初期URLを「`https://qiita.com/`」と設定。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/15000f71-0f03-5b4e-71bd-dcc58ed326f8.png">

## (2) Webページを開く
ここで、データ抽出したいホームページを対象のブラウザで開いておきます。
今回は「`https://qiita.com/`」を開いてください。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/187f65b6-85c6-7617-f9c0-baa94f8a4d8b.png">

## (3) Webページからデータを抽出
### ■ アクション
左上の**アクション**から、[`ブラウザー自動化`]－[`webデータ抽出`]－[`Webページからデータを抽出する`]をMain配下へドラッグアンドドロップします。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/67e089f1-e4a3-b243-af01-c37c51460eb0.png">

### ■ パラメータ設定
下記のようになったら、webページの方をクリックして、ブラウザをアクティブにします。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/c8f5592d-a5c7-98b4-30fe-b81e13cb9255.png">

そうすると「`ライブwebヘルパー`」が自動で出てきます。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/114beb77-0eb8-6d50-8842-b2f103fcac9a.png">

記事題名のところで「`右クリック`」すると、「`要素の値を抽出`」－「`Href: (https://qita.com…)`」というメニューが出るので、それをクリックし、記事のURLを取得します。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/3ba14a16-bf6b-11bf-6711-0ccfa0b2c215.png">

続いて、記事題名のところで「`右クリック`」し、「`要素の値を抽出`」－「`テキスト: …`」というメニューが出るので、それをクリックし、記事題名を取得します。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/ba8a146b-f1b1-47c3-689a-26fb057514da.png">

続いて、LGTMの数のところで「`右クリック`」し、「`要素の値を抽出`」－「`テキスト: …`」というメニューが出るので、それをクリックし、LGTM数を取得します。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/de68fd8a-f7a9-e092-2b9f-eeaae7fd1bdd.png">

同様に、次の記事題名のところで「`右クリック`」し、「`要素の値を抽出`」－「`Href: (https://qita.com…)`」というメニューが出るので、それをクリックし、記事のURLを取得します。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/8216f26a-a1bd-13fa-81bf-f1ecbccbf775.png">

そうすると表を自動認識し、テーブルが生成されます。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/3545295f-246d-8c90-e49a-7674c39463ed.png">

自動でついた"Value #1"などの列名を、"URL"などの正しい列名へ修正します。
※「`ライブwebヘルパー`」のウィンドウを大きく広げると見やすいです。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/353bc777-a0c1-15c1-0772-637b152eda77.png">
あとは、「`ライブwebヘルパー`」の「`終了`」を押下すると、「Webページからデータを抽出する」アクションのパラメータ設定画面に戻るので、「`保存`」を押下してください。

## (4) CSV ファイルに書き込み
### ■ アクション
左上の**アクション**から、[`ファイル`]－[`CSV ファイルに書き込みます`]をMain配下へドラッグアンドドロップします。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/e21ce408-4750-6bfe-1db5-ca38e3ceb4eb.png">

### ■ パラメータ設定
書き込む変数として、Webページからデータを抽出際の変数名を選択します。
今回は、(3) Webページからデータを抽出で「`DataFromWebPage`」に格納していますので、この変数名を指定します。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/d4e2023f-7843-d500-6643-a32c4a639d8d.png">

出力先のファイル パスを設定します。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/c090f307-12e7-be49-2988-56b350ac4084.png">

「`詳細`」をクリックして、オプションを確認します。オプションに「列名を含めます」があるので、スイッチ🔛を押して「`OFF`→`ON`」に変更します。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/12a41d52-d494-04e7-e9de-d458738d2bbb.png">
設定が終わったら「`保存`」を押下します。

# ➏ 実行
ここまで完成したら、「`▷実行`」を押下してください。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/ac852a31-853d-7698-70ac-41a3c76d932f.png">

# ➐ 結果
保存したcsvを開いて確認してみてください。
こんな感じになっていれば、成功です！
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/23663072-59a8-b1a1-729e-8e8a58e8a65f.png">

# ➑ 注意
スクレイピングとは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のことです。今回実施した方法は、実際にブラウザを立ち上げてデータを抽出する手順をお試しで1回実施するくらいなのでサーバ側への負担はあまりないと思います。しかし、技術的には、プログラミングによりブラウザを立ち上げなくてもデータ抽出ができます。また、プログラミングなのでパラメータを変えてバンバン実行することができるようになりますが、こうなってくるとサーバ側の負担が大きくなってきます。そのため、**スクレイピング禁止**を明示しているサイトもあります。そのため、簡易にスクレイピングを行う際でも、注意が必要になります。

>■ 禁止サイト例
Yahoo!ファイナンスでは、Yahoo!ファイナンスに掲載している株価やその他のデータを、プログラム等を用いて機械的に取得する行為（スクレイピング等）について、システムに過度の負荷がかかり、安定したサービス提供に支障をきたす恐れがあることから禁止しています。

# ➒ 以上
コマンド系は自動化しやすく、UI系は自動化しにくいなどありました。しかし、win11で強力なRPAアプリを標準装備することとなり、OFFICE系操作者など開発者以外の人も、簡単に自動化できる時代になってきました。以前はOFFICE作業などの自動化も開発業者へ発注していたけど、これからは事務作業の方もRPA操作を覚えることになりそうですね。大変そうですが、頑張ってください💪！

お疲れ様でした😊