Power Automate Desktop(PAD)で、Webページのスクレイピングをする際に使う「Webページからデータを抽出する」アクションで、ページ数が多い場合に、取得結果に数件しか入らなかったり、途中でエラーになるという事象が発生しました。
結論として、このアクションを使ってページ数が多い場合にうまくとることはできませんでしたが、その代替策として、ページ数が多いあるWebページをエラーなくスクレイピングする方法をまとめておきます。
はじめに
はじめに、今回取得しようとしたWebページはマイナビスタッフという派遣の求人サイトの検索結果です。件数としては約2500件存在しています。
そして、作成したフローは以下のようになっています。
「Webページからデータを抽出する」アクションの使い方については、以下記事にて詳しく解説しています。
件数が多いとエラーになるが根本的な原因は不明
で、このエラーの原因についてですが、取得対象が多いとエラーが発生する確率が高い傾向にありますが根本的な原因は不明です。色々調べてみましたが分かりませんでした。もし分かる方いらっしゃったらコメントいただければ幸いですm(__)m
エラーが発生してフローが止まることもあれば、最初の5件くらいしか取得できずにフローが正常終了するパターンもあって、謎です。
とにかく、「Webページからデータを抽出する」アクションを使う際、取得する件数やページ数が多いとエラーが発生しているという現状なので、根本的な対策ではありませんが、代替策を考えたいと思います。
件数を分けて少しずつ取得する
代替策として、「Webページからデータを抽出する」アクションを使う際に、一気に取得するのではなく、件数を分けて少しずつ取得するという方法を考えました。
設定内容に、「処理するWebページの最大数」とありますが、これが一定の数値を超えるとエラーになったりうまく取れていなかったりしています(数値は取得するページにより異なります)。体感的にはデータテーブルに格納される件数が500件を超えるとエラーになることが多い気がします。
そこで、エラーなく安定して取れるページ数まで数値を下げて、アクションを小分けにします。今回は、20ページ(500件程度)に設定すると安定して取得できるようになったので、20ページずつ取得することにします。
続きのページを取得する方法
1~20ページまでを取得したら、続いて21~40ページを取得します。
このとき、UI要素でページを移動するのは面倒なので、URL自体を変更します。例えば、現在のURLは末尾が20となっているので、これを21にすれば21ページ目に遷移できます。
そのため、フローに以下の赤枠部分を追加しました。
「Webページに移動」で、先ほどとった続きのページを指定して移動しておき、「Webページからデータを抽出する」アクションはコピーして追加します。
このとき、コピーしたアクションのままだと、ページングがうまくいかないことがあるのでページ設定はし直しておきます。
このフローを実行すると、各データテーブル変数に400件データが格納されます。
これをページ数分繰り返します。
まとめ
今回は、Power Automate Desktop(PAD)で、Webページのスクレイピングをする際に使う「Webページからデータを抽出する」アクションで、ページ数が多い場合に、取得結果に数件しか入らなかったり、途中でエラーになるという事象に関する回避策について紹介しました。
本当は該当のアクションで正しく内容が取り切れるのが一番良いのですが、根本的な解決には至りませんでした。有識者の方、もし解決策があれば教えていただきたいです。また、当ブログでも解決方法が分かれば追記したいと思います。
はじめてのPower Automate Desktop―無料&ノーコードRPAではじめる業務自動化
コメント