
今回は、Web上からデータを取得してきてその結果をCSV(エクセル)に保存する、という一連の流れをやってみましたので紹介します。
レコーディング機能は使用せずに手動でアクティビティを配置しています。主に使用したアクティビティは次の3つです。
- OpenBrowser(ブラウザを開く)
- DataScraping(データを取得する)
- WriteCsvFile(CSVファイルに書き出す)
何のデータを取得してくるか迷ったのですが、ちょうどサイト立ち上げということもあり、自サイトがGoogleにインデックスされているページのタイトルとURLを取得してみました。(GoogleでURLの頭に「site:」を付与して検索する)
フローとしては以下のようになります。
- ブラウザで「site:https//uipath.site」の検索結果画面を開く
- 表示された結果を全ページ取得する。
- CSVファイルに書き出す。
ものすごく個人的なことですが、記事を作成しているPCにエクセルの環境がなかったため、「WriteCSVFile」アクティビティを使ってCSVファイルに書き出しています。「Write Range」アクティビティを使えばエクセルでも同様に書き出せると思います。
ブラウザで検索結果ページを開く
ブラウザで指定したページを開くには2つ方法があります。
ひとつ目は、人が操作するのと同じようにブラウザでGoogleを開き、検索バーに検索したい言葉を入力する方法。
もうひとつは、検索バーにURLを打ち込んで直接検索結果ページを開く方法です。
人と同じように検索バーに入力することもできるのですが、何度も繰り返し行う作業を想定していますので、スピードの観点からURLを直接検索バーに入れる方法をとっています。ロボットが人と同じように入力するのも見ていて感動しますので、そちらが好きな方は「Type Info」等のアクティビティを利用してみてください。
ブラウザを開く
まずは「Open Browser」アクティビティを使ってブラウザを開きます。
このアクティビティで表示されるボックスに「”https://www.google.co.jp/search?q=site%3Ahttps%3A%2F%2Fuipath.site”」(引用符付き)と入力します。取得したい検索結果のURLに置き換えてください。
(実際に人の手で一度ページを表示し、その結果のURLをコピペするのが簡単だと思います)
プロパティは「Browser Type」をChromeにしていますがIEでも問題ありません。
これだけで一度実行してみると、目的の検索結果が表示されると思います。
データスクレイピングで検索結果を取得する。
続いて表示された検索結果を取得します。
デザインタブにある「DataScraping」を使用すると簡単に全ページの検索結果を変数に格納できます。
検索結果のページを開いた状態で「DataScraping」を押下します。
「Select Element」という画面が開くので、「Next」ボタンを押します。
ブラウザ上の部品(エレメント)ごとに背景色が代わり、どの部品を選択しているのかがひと目でわかります。
1位のタイトル(広告ですが)をクリックします。
「Select Second Element」という画面に切り替わります。
「Next」ボタンを押して、2位のタイトルをクリックします。
2位のタイトルをクリックすることにより、1位と2位の関係性を元に3位以降のタイトルも自動で取得されます。
全てのタイトルの背景色が代わりタイトルを取得できていることがわかります。
「Configure Columns」の画面で「Extract Text」「Extract URL」の双方にチェックを入れ、「Column1」を「ページタイトル」、「Column2」を「URL」に変更します。
次の画面では、取得したデータのプレビュー表示を見ることができます。
私が行った場合は、タイトルは取れましたがURLが取れていない状態でした。
そのため、「Edit Data Definition」ボタンを押下して次のように内容を変更します。「h3」タグは取れていますが「a」タグが取れていないことがわかります。
<extract>
<column exact="0" name="ページタイトル" attr="text" name2="URL" attr2="href">
<webctrl tag="div"/>
<webctrl tag="div"/>
<webctrl tag="h3" class="r" idx="1"/>
<webctrl tag="a" idx="1"/> この行を追加
</column>
</extract>
OKを押して元の画面に戻ると、タイトル、URL共に取得できていると思います。
「Finish」ボタンを押下すると、最後に「Is data spanning multiple pages?」と聞かれます。
これは他のページでも同様にデータを取得するかどうかを確認しています。
全ページでデータを取得したいため、「Yes」を押して、検索結果ページ下部にある「次へ」のボタンを選択します。
これでデザイナーパネルにアクティビティが追加され、データの取得フローが出来上がりました。
CSVファイルに書き出す。
プロパティのOutputを見てみると、「ExtractDataTable」という変数に出力されていることがわかります。
使いやすいようにデータテーブル型で出力されていますので、「WriteCSVFile」アクティビティや「Write Range」アクティビティで簡単にCSVやエクセルに出力できます。
単純に出力するだけでなく、データの削除や追加をしてから書き出したい場合は「データテーブル(DataTable)の操作方法」を参考にしてみてください。
作成したプロジェクトの実行
実際にUiPath StudioからF5で実行してみるとブラウザが自動で起動し、また自動でページが切り替わっていくことを確認できると思います。
今回CSVファイルの出力先を特に指定していないため、プロジェクトフォルダに取得した結果が格納されます。
まとめ
Web上からデータを取得し書き出す処理を紹介しました。
今回はCSVファイルに出力しましたがエクセル上に出力し、結果をソートしたり、件数を出力したり、グラフ化したりといった高度な処理もできると思います。
UiPathはWeb操作との親和性も高く、検索結果を取得してくる処理は非常に使い勝手もよいと思います。
次回は、UiPathで「ロボットをタスク化して決まった時間に実行する」方法を紹介したいと思います。