UiPathでRPAを実践してみる(4) ～ブラウザからデータを取得してみよう～

前回はWebブラウザにデータを登録する処理について記述をしました。
今回は逆にWebブラウザよりデータを取得する処理について2点、紹介していきます。
##テキスト情報の取得
さっそく、QiitaのWebページからデータを取得していきましょう。
例えば下記のページの要素から、「プログラミング知識を共有しよう」というデータが欲しかったとします。
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/85415aaa-627c-9ba1-7663-e82384996c36.png)


この場合、最も簡単な方法はRecordingよりCopy Textを使う事です。下記の項目を選択して、取得したい要素を指定。
![キャプチャ(1).PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/5b88705a-0133-c58f-6317-189b9ffd2210.png)

Save & Editすると下記のシーケンスが自動で作成されます。
![キャプチャ(2).PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/4faa6797-d298-b706-f5fd-085fc53d48d6.png)

Attachは、開いているブラウザをActiveにするイメージとなります。次にGet Textという要素が出てきました。
これがWebから要素を取得する処理となります。

Recordingを使うと、Outputには自動で、`H`という名前のOutputが出来ます。
Outputは`generic`型です。これは、UiPath特有の型で、String,Int,Date,Boolean等の様々な要素を受け取れる型となります。

この内容をMessage Boxを使って出力しましょう。`generic`型は、利用する時に型指定する必要があります。
今回はMessage Boxの出力として使うので、`ToString`で文字列として扱いましょう。
![キャプチャ(3).PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/f21633c9-fc34-d0b2-c0b9-31d8984a7ce0.png)
![キャプチャ(4).PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/2b110c22-81af-567d-f452-d69fd58e3f70.png)

とても、簡単にできました。

>ところで、今回の様にデータが出現する場所が固定であればさほど、難しくないのですが、欲しいデータの位置が可変となる場合、
`Selector`という概念を理解する必要があります。
詳細は[こちらの記事](https://qiita.com/motuo/items/03e08ab384996545c045)に書いているので、今回は割愛します。
下記の様なケースで、**合計**の数字を取ろうとすると、日によって、データが出現する位置が異なるので、
工夫する必要があるんです…

>6/22時点のデータ(合計が3行目にある)
>
>| Left align       |       Right align |
>|:-----------------|------------------:|
>| This             |              1 |
>| column           |            2 |
>| 合計             |              3 |
>
>6/23時点のデータ(合計が4行目にある)
>
>| Left align       |       Right align |
>|:-----------------|------------------:|
>| This             |              4 |
>| column           |            5 |
>| is             |              6 |
>| 合計             |              15 |


##データスクレイピング
Webページのデータが規則的な場合、この機能を使う事が出来ます。[(2)の記事](http://qiita.com/motuo/items/00b0a3055a90545b853c)でQiitaの記事一覧を作っていたのがこの技術です。

早速、使っていきましょう。
①Data Scrapingを選択する
![キャプチャ(5).PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/ab26d367-6a20-5fc2-96c9-7fb6ff07c398.png)

②下記の画面が出るので、Nextを選択
![キャプチャ(6).PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/193a330a-1a09-7c75-72dd-5df1a84f2f91.png)

③最初の要素を選択して、Nextをクリック
![キャプチャ(8).PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/4832b888-ecea-8bc2-ab48-a702a8dbd325.png)

④次の行の要素を選択して、Nextをクリック。すると、下記の画面が出てくるので、データに適当な名前を付けてNextをクリック
![キャプチャ(9).PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/4c4381ae-375c-de35-4d40-02f52bc1b921.png)

**下記の順にクリックするイメージ**![キャプチャ(7).PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/bb799369-ba14-2601-70c3-73cdc727f2f9.png)

⑤下記の画面が出てくるので、内容を確認する。終わりたければ、「Finish」ボタンで良いが、さらに、「いいねの数」も欲しかったので、`Extract Correlated Data`をクリック
![キャプチャ(10).PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/0ad58861-12f6-9bc4-b1d3-ea3bc8f007f2.png)

⑥いいねについても、上記の③～⑤の手順の容量で処理を行う。データの取得はここで終わりにするので、「Finish」をクリック。
![キャプチャ(11.PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/315592f4-654c-16e9-5e25-47ae74910aa7.png)![キャプチャ(14).PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/be2542a0-4848-8ba5-113f-11d27905fc7c.png)

**Maximum number of results**は、最大でこのテーブルから何件のデータを取得するかを表す。
この場合、Defaultの100件にしています。

⑦次に、複数ページあるか聞いてきます。Qiitaの記事の一覧は「もっと見る」ボタンを押すと、より多くの記事が出ますね。というわけで、Yesを選択しましょう。
![キャプチャ(12).PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/fa954651-4782-aaa0-b47d-9c5aa640571f.png)

⑧次のページへ遷移するボタンを支持する必要があるので、「もっと見る」ボタンを指定してあげます。
![キャプチャ(13).PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/a468119c-d62e-3139-b915-3a5018671ba2.png)

これで完了です。作成されたシーケンスを見てみましょう。![キャプチャ(15).PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/2370afd5-0fe6-7fa7-86d7-8f09b340593c.png)

Outputはテキストの取得とは異なり、`DataTable`型となります。
なので、簡単にCSV形式に吐き出すことができます。
![キャプチャ(16).PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/9470234b-de98-c126-7f5f-218f5bbb7982.png)

この様に、100件のデータが無事に取得されました。
![キャプチャ(17).PNG](https://qiita-image-store.s3.amazonaws.com/0/154110/eae62789-c2de-001b-89d2-e423e782df0f.png)

とりあえず、よく使いそうな機能を書いたので、次は細かなテクニックを色々と書いてみたいと思います。