【UiPath】スクレイピング機能を学習する【初心者】
UiPathの学習追体験記事です。
※あくまで学習中の脳内を記事にしたものなので、この記事で書かれてあることが”正しい”とは限りません。
参考:学習効率本5巻 「知識の自作」
0.動機
「Googleの検索上位表示をまとめて取得したい」と思っていたところ、勉強中のUiPathでもスクレイピング機能があることを知ったため、その機能を学習してみました。以下、学習内容となります。
1.事前情報
まずは、UiPathのスクレイピング機能についての説明文を見てみましょう。
UiPath学習プラットフォームの「UiPathアカデミー」から説明文を引用しています。
UiPathのスクレイピング機能とは?
データスクレイピング機能とは、構造化されたデータを簡単に取得することができる機能のことです。
引用元:https://academy.uipath.com/jp/
構造化されたデータとは?
構造化されたデータとは、一定のルールに基づいて整理されており、予測可能なパターンで構成されている情報を指します。
引用元:https://academy.uipath.com/jp/

UiPathでは構造化されたデータを簡単に取得できるとのこと。UiPathアカデミーの説明文に、例として、Google検索表示のタイトルとリンクの取得に関して述べられていたため、自分のやりたいことはできるはず。ただ、UiPath初心者の自分にできるかが心配だ。。
後、スクレイピングの中でもデータスクレイピングと画面スクレイピングがあるらしい。今回はデータスクレイピングを学ぼう。
2.学習プロセス
学習プロセスとは、
学習テーマに対して、問いを重ね、実践することで理解を深めていくプロセス
と定義しています。
今回の場合は、
学習テーマ:UiPathのデータスクレイピング機能
問い① :Googleの検索順位を取得できる?
実践・理解:○○
問い②
…
という感じ。
では、以下から、UiPathのデータスクレイピング機能について学習していきます。
問い① Googleの検索順位を取得できる?
まずはじめの問いは、Googleの検索順位を取得できるかどうか。UiPathアカデミーの説明文通りにやればできると思うが、UiPath歴1ヶ月未満の自分が本当にできるのか。
実践
UiPathのデータスクレイピング機能を使用して、Googleの検索順位を取得することを試みた。結果的に取得できはしたが、余計な情報を取得してしまった。
実践の様子 とりあえずデータスクレイピングでデータを取得してみる
「データスクレイピング」をクリック。
はじめに表示されるウィンドウでは「次へ」をクリック。
データスクレイピングするページはブラウザGooglechromeからGoogle検索「UiPath」で検索したページ。
検索表示1位のタイトルをクリック(広告欄は除く)。
「次へ」をクリック。
1ページ目最後のタイトルをクリック。
すると、タイトル以外の部分もハイライトされてしまった。タイトルとリンクのみ取得できればいいのだが……
「テキストを取得」と「URLを取得」のチェック欄にチェックをつける。
テキスト列名:タイトル
URLの列名:URL
と設定し、「次へ」をクリック。
表示されたプレビューデータを見ると、やはり、余計な部分も取得してしまっている。
とりあえず、取得したデータをCSVに書き込んでみる。
やり方は、「CSVに書き込み」アクティビティを追加して、書き込み先ファイルと書き込み元(変数)を設定するのみ。
開いてみると、
案の定、気持ちの悪いデータになってしまった。
実践の様子 試したこと
「CSVに書き込み」アクティビティの代わりに、「メッセージボックス」アクティビティを使ってみた。
なにも表示されず。。
おそらく、「メッセージボックス」アクティビティが扱えるデータ型に原因があるのだろう。
ということで、UiPathドキュメントで調べてみた。
扱えるデータ型については書かれていなかった(当たり前すぎるのだろう)。
他の記事で調べてみたところ、すべてデータ型「String」で設定されていたため、「メッセージボックス」アクティビティはデータ型「String」を扱うアクティビティなのだろう。
つまり、今回は、「メッセージボックス」アクティビティでデータ型「DataTable」の変数を利用したために、変数の中身が表示されなかったのかもしれない。
問い② タイトルとリンクのみ取得するには?
問い①では、データを取得できたものの余計なデータも取得してしまった。どうにか、検索表示のタイトルとリンクのみ取得できないだろうか。
実践
データスクレイピングするにあたり、選択する値を変更することで欲しい情報をまとめて取得できた。
実践の様子 構造的に分かりやすいものを選択してみた
検索表示のされ方が、検索表示1位のみ異なっていたため、検索表示2位以下のものを指定してデータスクレイピングしてみた。
上記画像は、検索表示2位を選択している画像。
1ページ目最後のタイトルをクリック。
すると、1ページ目に表示されている検索表示1位から最後のもののタイトルとリンクが取得されていた!
上記画像は、その時のデータ定義。
実際にCSVに書き込んだデータを見たところ、まとまりよくタイトルとリンクが取得できていた!(上記画像)
実践の様子 ちょっとしたミス
デバッグ時、CSVに書き込むファイルを開いたままにしてしまい、エラーが発生した。
問い③ 他の検索表示では?
問い①②では、検索キーワード「UiPath」で試してみた。他のキーワードで検索して表示のされ方が異なる場合はどのようにデータスクレイピングされるのだろうか。
検索キーワード「スクレイピング」で検索した結果、検索表示1位に「強調スニペット」という欄が設けられていた。
強調スニペットとは、

実践
強調スニペットで表示されているタイトルの取得も考慮した上で、検索表示のタイトルとリンクの取得を試みた。
実践の様子 データ定義をいじる
強調スニペットとなっている記事タイトルを指定して、データスクレイピングを試みたところ、余計な情報まで取得してしまった。
そのため、検索表示2位以下(強調スニペット以下のタイトル)のタイトルを指定し、データスクレイピングを試みた。結果が下記画像。
強調スニペット記事は取得されていなかった。
どうにかして、強調スニペット記事も取得したいところ。
なんとなく、データ定義を見てみた。(上記画像)
最初の「idx」が「2」になっている。これを「1」に変更することで、強調スニペット記事も取得できるのではないか(と淡い期待)。
「1」にしてみた。
結果…
強調スニペット記事のみ取得!?!?
なぜ???
理由は分からず仕舞い。
とりあえず、先ほどの数値を「1」から「2」に変更して、CSVに書き込み。(下記画像)
強調スニペット記事を含まない検索表示2位以下のタイトルとリンクを取得できた。
問い④ 他のブラウザでは?
これまでは、GooglechromeからGoogle検索を使ってデータスクレイピングを試みた。次は、Edgeでデータスクレイピングを行ってみる。
実践
Edgeからデータスクレイピングを試みた
実践の様子 謎のリンクが取得される
検索キーワード「UiPath」
問い②の方法でデータスクレイピングを行ってみた結果が上記画像。
広告欄はハイライトされていなかったが、広告欄に表示されているURLを取得してしまっている(広告欄のタイトルは取得されていない)。
検索キーワード「スクレイピング」でも同様な結果に。
とりあえず、CSVに書き込み。
「ブラウザーにアタッチ」アクティビティのプロパティ「ブラウザーの種類」を確認したところ、「Edge」に設定されていた。自動でブラウザーを識別してくれるのだろう。
データを確認したところ、やはり、広告欄のリンクを取得してしまっている。
謎だ。。
3.まとめ
データスクレイピングで簡単に構造化されたデータを取得できる。しかし、必要な情報のみを取得することは難しい(初心者にとって)。
今回感じたデータスクレイピングのコツは、『似た構造を持ったデータを選択しろ』。
以上。
4.参考文献
※無料で利用可能
コメント