PAD(Power Automate for Desktop)によるWebスクレイビングをやってみた ~第2回:Webのテーブル取得の改良~
第1回の振り返り
前回に引き続き、MS一覧表を作成していきたいと思います。
下記は前回の内容になりますので、前回何をやったかを確認したい方はこちらをどうぞ。
前回の課題
さて、前回の最後では、表の取得方法に課題があるという形になりました。
こちらの課題は、PADで取得した表がWeb上の表の形と一致していないことが問題でした。
一致していない箇所は、Webの表に存在するセルの結合がPAD経由で取得した場合、どこからどこまでが結合しているかがわからなくなることでした。
課題の分析
ひとまず、課題を分析するために下記の3点の比較を行いました。
Webの表をブラウザで表示した表
Webの表をHTMLのコード
PADで取得した表
結論としては、Webの表に存在する結合の情報をPAD経由にすると引き継ぐことができていないことがわかりました。
PADのアップデートにより読み取る表にセルの結合がある場合の挙動が変われば、今回の問題は解決しそうです。
しかし、現状ではPADの読み取りが変わることはないと思うので他の方法でセルの結合情報を引き継ぐ必要があります。
代替方法の検討
Webの表のセルの結合情報を取得する方法としては、下記の2点を検討しました。
その他の方法もあるとは思いますが、いったん割愛します。
HTMLのコードからセルの結合情報を取得
ExcelにWebの表を取り込む機能(Webクエリ)
1.の方法は、HTMLのコードから読み取るのですが、そもそもコードを細かく読み取ることができるならばPAD経由で自動化することはいらないので、今回は2,の方法を採用しました。
幸い、セルの結合がある場合、Excelに読み取った内容では、セルの結合を分解するような処理が行われるため、欲しい情報として読み取ることができることがわかりました。
そのため、URLを変えながらExcelのクエリテーブルを取得するVBAを作成し、PADからURLの情報を渡して、VBAを実行してあげる流れを考えます。その際、表の不要な列や不要な改行などはVBAで合わせて処理してしまいます。
今回、VBAを作成するにあたりVBA自体はExcelのマクロの記録を用いて、Webの表からデータを取得する流れをマクロにしました。
なお、通常のPADでは、Excelマクロが実行できませんが、下記のサイトの内容を実行するとマクロが実行できるようになります。
前回からの変更点
前回の課題の解決および更新したフローは下記のようになります。
「VBA組むならば、PADいらなくないですか?」となりそうですが、VBAにはVBAの得意なことや苦手なことがあり、PADにも同様です。
要は、商用の完全なソフトウェアと作るではなく、個人や特定のグループレベルで使用するシステムの場合、それぞれのツールの良さが生きるようにいろいろなツールを組み合わせてあげて効率的に仕組みを作っていくことが重要と思います。
次への課題
ついに機体の情報をまとめて取得することができました。
次に行うことは、計算とかで使いやすいように情報を整理して成型するブブになります。
手修正で治すこともできますが、今後のことを考えると、面倒なのである程度は自動化したいと考えています。
多分、次はExcelデータをCSVに吐き出して、Python+Pandasで処理することになりそうです。(PADは全体フローというか、個別の作業をつなぐことに使います、、、)
まとめ
今回は、Webの表の情報をなるべく欠落することなく取得する方法を検討し実装しました。
次回に向けての課題見えてきたので今回は、ここまでとしたいと思います。
少しでも皆様のお役に立てれば幸いです。
参考にしたURL様
Excelのクエリ関係を調べるのに使いました。