2021
03/04

Microsoft Power Automate DesktopでWebページのスクレイピングを試す

Microsoftが「Power Automate Desktop」というOSやブラウザの操作を自動化するツール(RPAと呼ぶそうです)を無料で提供するそうです。

[速報]マイクロソフト、無料でRPA機能「Power Automate Desktop」をWindows 10ユーザーに提供開始。Microsoft Ignite 2021

インストールしてみるとOS標準の操作のほか、ブラウザ経由でWebサイトのデータを取得して保存するようなことができるようなので、試しに使ってみました。

ADs

Microsoft Power Automate Desktopのインストール

インストールの手順についてはGiGAZINE様の記事が詳しいです。
ので当記事では割愛します。

Microsoft公式の無料自動化ツール「Power Automate Desktop for Windows 10」でプログラミング不要の自動操作を試してみた

試しに…エニタイムフィットネスの店舗情報を価格をスクレイピングする

エニタイムフィットネスは最近増えている24時間使えるマシン特化型ジムです。私もコロナ以前に会員だったことがありますが、スタッフが話しかけてくることもなく、会員同士の派閥があるわけでもなく、非常に快適でした。そろそろ再開したいです。

エニタイムフィットネスはフランチャイズである都合上、同じ地域でも店舗によって若干月額会費が違います。
行きやすさが同じなら少しでも安い店舗で会員になりたいと思うのが人情です。

公式サイトでは価格順で比較できるようなページがないため、スクレイピングで価格情報を抽出して比較できるようにしてみようという試みです。

Microsoft Power Automate Desktopでフローを作成する

実際にやっていってみましょう。

新規のフローを作成した直後は以下の通り空白となっています。

左のアクション一覧から行いたいアクションを選び、ドラッグして構成していきます。
今回は

新しいリストの作成
新しいChromeを起動する
Webページからデータを抽出する
For each
Webページに移動
項目をリストに追加
CSVファイルに書き込み

のアクションを使用します。

1.新しいリストの作成

まず最終的に得られるデータを書き込む空のリストを作成します。
要は空配列を定義するということです。

2.新しいchromeを起動する

ブラウザを起動します。
起動時のURLを指定できますので、店舗一覧ページを指定します。

3.Webページからデータを抽出する

一覧ページから店舗詳細ページへのリンクを取得します。

上記のモーダルが開いているときにブラウザを起動していると、ページのどの部分からどの内容を取得するかを画面を見ながら選ぶことができます。直接Webページの取得したい箇所をクリックして選ぶこともできるのですが、HTMLの知識がある方ならセレクタを直接書いたほうが早いと思います。

この画面で左下の「詳細設定」をクリックすると

セレクタを入力できます。
ここで取得したい内容は詳細ページのURL一覧ですので、「リスト」を選択します。

ここで得られるリンク一覧は新しいリスト(1の空リストとは違うもの)に保存されます。
上記の例では「DataFromWebPage」という変数に入ります。

4.For each

3で得られた詳細ページへのリンク一覧をforEachします。
対象となる変数を指定する必要があるので、「DataFromWebPage」を選択します。

5.Webページに移動

詳細ページに移動します。
URLはforEachのvalueである「CurrentItem」を指定します。

6.Webページからデータを抽出する

詳細ページの中から
・店舗名
・価格
・住所
・電話番号
を抽出します。

ここでも店舗一覧を取得するときと同様にセレクタを書いたほうがいいと思います。
幸い各項目ごとに一意のclassがつけられていましたので、そのクラスのテキストを取得します(「Own Text」とすればinnerTextになります)

7.項目をリストに追加

6で得られた内容を1の空リストに追記していきます。

7.for each終わり

ここでforEachが終わります。
※forEachブロックを設置すると自動でEndセクションが入ります。

8.CSVファイルに書き込み

1の空リストに店舗の情報が保存されていますので、それをCSVとして書き出します。
これで作業は完了です。

できあがったフロー

ここまでの作業を行うとこのようなフローになります。
これを実行します。

実行中は実際にブラウザを開いて該当ページにアクセスし、データを取得しますので結構な時間がかかります。
しかし黙って待つだけでブラウザからフォーカスを外しても動作しますので、それほど苦になることはないと思います。

できあがったデータ

このようなCSVファイルが生成されました。
※データの一部です

おかしなクォーテーションが入っていますが、この程度ならエディタで置換したり置換自体もフローとして作成すればこのままうまく使えそうです。

Microsoft Power Automate Desktopの(現時点での)弱点

ルーチン作業の自動化のほか、データ収集などでも使えそうで非常に楽しみですが、以下の点が気になりました。


・パソコンを起動していないと動かない(デスクトップアプリなのでしょうがないですが…)
・自動で定期実行させる機能がない
・フローのエクスポートができない

今後のアップデートにも期待したいところです。

まとめ

少しさわってみた程度ですが、あまり知識のない状態でもWebサイトからデータ収集というフローが簡単に作成できました。制御構文も使えますし複数のフローを組み合わせることもできるようなので、使いこなせばいろいろなことができそうで楽しみです。

ADs

Post Comments

メールアドレスが公開されることはありません。