UiPathのデータスクレイピングを安定させるには?

こんにちは。AI&ロボティクスセンターの駒宮です。

今回は、UiPathの特徴的な機能のひとつ、データスクレイピング機能についてのお話です。

データスクレイピング機能とは、表やWebページなどからデータを抽出しDataTable型の変数に格納する機能です。ページが複数あっても「次へ」ボタン(※次のページへのリンク全般を、以降『「次へ」ボタン』と表現します)を押してページ遷移することで、目的の表データを全て取得することができます。

UiPathアカデミーで初めてデータスクレイピング機能を使った際は感動しました!!皆さんもそうではないでしょうか?しかし、その後、さまざまなWebアプリで試すうちに、失敗することが往々にしてありました…。「エラーにはならないけど何かおかしい」「抽出した件数が実行回毎に違う」「抽出した件数と実際の件数が合わない」などどいった問題です。

これらの原因は、構造化データを抽出(ExtraData)アクティビティ標準のページ遷移機能が弱い(状況によって失敗する)ことや、デフォルトの設定がContinueOnError=Trueで、エラーを無視する設定になっていることにあります。

今回は、安定して複数ページのデータスクレイピングをするためには、どのようなフローを構築すればいいかについてご紹介します。

失敗しないためにどうするか

データスクレイピング失敗の原因の多くは、ページ読込が完了する前に次の処理をしようとして起こっています。
  • 「次へ」ボタンが表示されるのが遅く、誤って最後のページと認識される
  • ページの遷移が遅く、誤って前のページの表データを取得してしまう
  • ページの読込が遅く、表が全て表示される前にデータを取得してしまう
また、以下のケースは標準のページ遷移オプションで対応できません。
  •  ページ番号しかないアプリで、「次へ」ボタンがそもそもない
  • 最後のページまでいっても「次へ」ボタンがある
これらの理由から、これまで私が担当した案件では、アクティビティ標準のページ遷移オプションを使ったことがありません。それではどうしたらよいか…。次のようなフローチャートを組んで、より安定したデータスクレイピングを行います。

データスクレイピングを安定させたサンプルフローチャート

 【処理概要】
1. ページ番号を初期化
2. 画面が表示されるまで待機
3. スクレイピング
4. 最後のページでない場合
 4.1. スクレイピングを続行
  4.1.1 ページ番号をカウントアップ
  4.1.2. 「次へ」をクリック
  4.1.3. 「2. 画面が表示されるまで待機」に遷移
5. 最後のページの場合
 5.1. 処理を終了
それぞれのシーケンスを詳しく見ていきます。

画面が表示されるまで待機

画面から情報を取得し、スクレイピングしようとしているページが正しく表示されたかを判断します。正しく表示されていない場合は、リトライ処理で少し時間を空けて、画面のローディングを待ってから再度確認します。

最後のページか?

画面情報から最後のページかどうかを判断します。
今回は表示された件数を”/”で分子と分母に分割し、両者を比べることで、最後のページかどうかを判断しています。

補足:文字列の分割(String.Split関数)
 指定された文字で区切られた部分文字列を格納する文字列配列を返します。

スクレイピング

ページ番号が正しく、表も最後まで表示されたので、表データを抽出します。
構造化データを抽出(ExtraData)アクティビティは、デフォルトでContinueOnError=Trueですが、今回は抽出対象の表が存在することをここまでのフローで確認済みなので、空白(=False)にして、予期しない理由で抽出に失敗した場合はエラーを返すように設定します。
また、今回のように、構造化データを抽出(ExtraData)アクティビティを何回も呼び出す場合、出力(Output)のDataTable型変数にデータが追記されていきます。データテーブルを結合 (Join Data Tables)アクティビティなどを使う必要はありません。

スクレイピングを続行

最後のページではない場合、スクレイピングを続行し、「次へ」ボタンをクリックします。同時に次にスクレイピングするページ番号のカウントアップをします。

 

ログについて

このように、ページ遷移のフローを自前で用意することで、詳細なログ出すことも可能になります。標準のページ遷移オプションを使った場合は、このようにログを出すことはできないので、不具合があった際に原因の特定が困難です。

最後に

今回はデータスクレイピングを安定化させるためのノウハウを紹介しました。Webアプリケーションのデザインは様々ありますので、今回の方法が全てに当てはまるわけではないですが、「ページが表示されたか?」「何ページ目か?」「最後のページか?」といったような観点と、それを確認することのできる手段を考えてみてください。

  • このエントリーをはてなブックマークに追加

クレスコのRPAセミナー

クレスコではAIやRPAをテーマとした技術セミナーを定期的に開催しています。現役エンジニアが実践的なノウハウを提供します。ぜひご活用ください。

◆受講者の声
[無料セミナー]RPA導入ファーストステップ
「UiPathのデモ、各ツールの比較が分かりやすく有益と感じた。」
「RPA導入で種々の問題点があるので、”つまずき”の部分が参考になった。」

[オーダー研修]RPA/UiPathハンズオン
「今まで迷ったところや分からなかったところがすべて判明した爽快感がありました。もっと早く受けたかったです。」
「RPA導入新任者向け研修として最適。今後、当社のRPA開発者向け研修として活用させていただく事を検討します。」


クレスコのRPAセミナーを詳しく見る