【5分でできる】Automation Anywhere で簡単ウェブスクレイピング

### [2019年10月にリリースされたAutomation Anywhere A2019版の記事も作成しました。](https://qiita.com/RPAbot/items/09c2dc6405a379e8d5ad)

# 概要
定期的にウェブページ上の決まった場所からデータを抜いてきて活用する「**データスクレイピング**」は、Automation Anywhere の標準機能を使って簡単に実施できます。

今回は、ウェブページ上のテーブルから抜いてきたデータを CSV ファイルに保存して Excel で開いてみたいと思います。5分もあれば設定を完了することができます。

環境

* Automation Anywhere Enterprise 11.3.2
* Automation Anywhere Community Edition

# さっそく作ってみよう!

Client を開いて、新規のワークベンチを開いてください。

### 1. Web Recorder / Extract Table コマンドを使う

まず、左側のコマンドから「**Web Recorder/Extract Table**」コマンドを見つけて、アクションリストにドラッグ＆ドロップします。すると、Web Recorderダイアログボックスが表示されるので、ターゲットページのURLを入れて「Launch」ボタンをクリックします。
![aa-web-scraping-basic01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/c5829a64-bd0d-3610-426c-d14f68370244.png)

ターゲットページ: https://jp.kabumap.com/servlets/kabumap/Action?SRC=marketList/base

### 2. 目的のテーブルをマウスでキャプチャ!

「Capture Table」ボタンをクリックすると、Internet Explorer でウェブページが表示されます。ページ上でマウスカーソルをテーブルの上に動かしていくと、テーブル枠が「緑の二重線」で縁取りされます。
![grid-green.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/e82b6e86-6768-6827-410b-0d36c6e274aa.png)

>(注) うまくいかないときはいったんすべてのInternet Explorer を終了して、「Capture Table」ボタンのクリックからやり直してください。もしくは後述の通り、テーブルに見えるけれどもテーブルではないオブジェクトである可能性もあります。

今回のターゲットページでは、以下の通りテーブルの周りに「緑の二重線」が現れました。そこでクリックして確定します。
![aa-web-scraping-basic02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/2387af88-75d4-58a6-0ff7-944b22055fb9.jpeg)



### 3. エクスポート先のCSVを指定
取り出すテーブルデータは CSV ファイルに保存します。アウトプット先のURLを指定してください。
![aa-web-scraping-basic03.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/c5c59d84-0007-0dd3-12c3-ab8f1a374f6d.png)

どのようにデータが取れているかを見るには「View extracted table」ボタンをクリックします。
![aa-web-scraping-basic04.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/e61cd8ca-fb3d-c008-8410-0f2a093b8a97.png)

「Save」ボタンで確定するとコマンドがセットされます。今回は、保存したCSVをExcelで開くコマンド「**Excel/Open Spreadsheet**」コマンドを2行目に挿入しました。
![aa-web-scraping-basic05.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/4973019c-a3e4-b759-6262-79781564e714.png)


# 実行してみよう!
さて、これでアクションリストが完成したので、保存して実行してみましょう。
すると、以下のExcel画面が起動して完了します。簡単にデータスクレイピングが完了しましたね！
![aa-web-scraping-basic06.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/4610a175-b88f-d502-b687-7c6451e61081.png)


# 【応用】 読み込んだテーブルのデータを操作するには
スクレイピングしたデータをボット内で活用する方法をもう少し見てみましょう。「**Web Recorder/Extract Table**」コマンドが実行されると、メモリ内にテーブルが読み込まれた状態になるので、Loopコマンド (`Start Loop "Each row in an Internet Explorer Table of Session: Default"`)を使って1行ずつ内容を見ていくことが可能です。
![aa-web-scraping-basic08.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/7653ddbe-9149-bb39-e21a-04f75b7ca594.png)

データの参照は`$Table Column(列番号)$`で行います。試しに1列目から5列目までをMessage Boxで表示させてみます。
![aa-web-scraping-basic07.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/218ff4ed-bb41-6654-8bbf-4a8a51c880df.png)


実行すると、以下のように1行ずつデータが表示されることがわかります。これで読み込んだテーブルのデータも好きなように加工できますね。
![aa-web-scraping-basic09.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/61ff9314-af8b-ba2b-7029-7dac41dca69b.png)


# まとめ

いかがでしたでしょうか。基本的なテーブルのデータスクレイピングを行うだけなら1行のコマンドだけで実施できてしまいます。また、ダイアログボックスや Internet Explorer でのビジュアルな操作以外に、コードを書くような操作はなく、Automation Anywhere を使ったデータスクレイピングがいかに簡単であるかをお判りいただけたかと思います。

### 今回の前提と制限事項

今回の操作を別のウェブページで試す場合、以下のことに気を付けてください。

* テーブルはテーブルタグ (`<table><tr><td></td></tr></table>`) で構成されている必要があります。一見、レイアウト上はテーブルになっていも、他のタグで構成されている場合があり、その場合は「Web Recorder / Extract Table」コマンドではデータを抜けません。
* テーブルのデータに次のページがある場合は、1ページ目のデータしか抜いてきません。複数ページのデータを抜きたい場合は[別途方法があります](https://qiita.com/RPAbot/items/b8b4547893e00f8c3a34)。
* テーブルの中の文字列にリンクやイメージがついていて、それらを抜き出したい場合は[別途方法があります](https://qiita.com/RPAbot/items/b8b4547893e00f8c3a34)。

### (おまけ) GUI で始める方法もあります
今回は、あえてワークベンチから始めましたが、Clientの「Record」ボタンのドロップダウンを「Web recorder」にしたうえで、ワークベンチを開かずに直接GUIでれコーティングをする方法もあります。これもほぼ同じステップでExtract TableでテーブルをInternet Explorer上で選択していくことになります。

![aa-web-scraping-basic21.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/526b9ae9-7cf5-835a-8fa2-f4cd14040447.png)


### (おまけ) 運用環境と費用についての考察
今回は RPA ソフトウェアである Automation Anywhere を使ってデータスクレイピングを行ってみましたが、スクレイピングを行うだけに特化すれば RPA を使わなくても専用のスクレイピングツールがあり、無料のものから年間数万円、数十万円のものもあります。RPA は、どの主要ベンダーも、最低年間 100 万円弱くらいの費用がかかりますので、RPA を実際に運用環境としてスクレイピングに使うには、以下のような条件のいずれかを満たしている必要があるかと思います。

* 無料の Community Editionが使える小規模企業に該当 (年商500万米ドル未満、かつ従業員/PC 250人/台未満)
* 既にRPAツールが別目的で導入されているため、スクレイピング用の追加ライセンス費用があまりかからない
* スクレイピングしたデータを他のシステムと連携させたり、大規模にスクレイピングを行う必要がある

RPAツールをスクレイピングに使うメリットは以下のようなものがありますので、上記の条件に該当するのであれば、活用してみたいところです。

* 操作が簡単である。プログラミングがわからなくても操作が可能
* 取り出したデータを他のシステムとも簡単に連携できる