【🔥UiPath vs Automation Anywhere🔥】同一書式の複数Webページから情報を抜き出す (1) - UiPathの場合

RPAによるWebページの「繰り返しパターンデータの取得」(複数ページにまたがる表データなど)はUiPathでもAutomation Anywhereでも専用のコマンドが提供されており、『**[ちょっとだけ規則正しくない繰り返しパターンのデータスクレイピングを試してみた](https://qiita.com/Okura_/items/859dbafcfe57e9e2d969)**』で紹介したようにどちらも比較的簡単に実装できますが、繰り返しパターンからリンクされている各詳細ページの情報を取得していく場合は少々工夫が必要です。たとえば、一覧からリンクされているプロファイル情報、商品の詳細ページ、レシピの詳細ページ、などです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/56bd51c5-f49e-8897-9e30-3bcb1d686dfc.png)
 :arrow_up:今回の想定は上の図のような場合です。

一覧ページの繰り返しパターン取得は以下のようにUiPathもAutomation Anywhereもウィザードが用意されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/0bb38fca-4e54-81c9-95f0-05827c3e4960.png)

# データスクレイピングでとれるURLの「その先のページ」をスクレイピングしたい!
工夫すべきポイントの概要はこんなかんじです(^_-)-☆

* 専用のウィザードが用意されていないので、変数とループを使ったプログラミングが必要
* 変数を使えるフィールドが限られている場合があり、使えるコマンドが限定される場合がある

今回は、価格コムの売れ筋ランキングのページ (一覧ページ) からリンクがある、商品説明のページ (詳細ページ) をスクレイピングしてみようと思います。このプロセスがUiPathとAutomation Anywhereでどう異なるかを比べてみたいと思います！物事を簡単にするために、売れ筋ランキングのページの項目とURLは『**[ちょっとだけ規則正しくない繰り返しパターンのデータスクレイピングを試してみた](https://qiita.com/Okura_/items/859dbafcfe57e9e2d969)**』で紹介されている方法であらかじめExcel上に一覧になっているものとします。

# 用意されているデータと取り組み方針
以下のページから各商品のメーカー名、商品名とURLをスクレイピングしたものを表で用意します(^^)/
https://kakaku.com/pc/note-pc/ranking_0020/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/37b21a35-d588-a13b-a5bb-a6af2b5c844e.png)


例: `d:\kakakucom.xlsx`(価格.comの場合は「価格.com - <font color="#55ccff">(メーカー名)(商品名)</font> 価格比較」という文字列が詳細ページのタイトルになっています)

|メーカー名|商品名|URL|
|:--|:--|:--|
|Dell|Inspiron 14 5000 プレミアム Ryzen 5・8GBメモリ・256GB SSD・Radeon Vega8搭載モデル|`https://kakaku.com/item/K0001219355/`|
|HP|Pavilion 13-an1000 価格.com限定 Core i5&256GB SSD&メモリ8GB&フルHD&タッチパネル搭載モデル|`https://kakaku.com/item/J0000032156/`|
|Lenovo|ThinkPad E595 価格.com限定 AMD Ryzen 5・8GBメモリー・256GB SSD・15.6型フルHD液晶搭載 20NFCTO1WW|`https://kakaku.com/item/K0001197912/`|
|マウスコンピューター|mouse F5-celeron-KK 価格.com限定 8GBメモリ/240GB SSD/15.6型フルHD液晶搭載モデル|`https://kakaku.com/item/K0001227837/`|
|HP|HP 14s-dk0000 価格.com限定 AMD A4/4GBメモリ/128GB SSD/14型フルHD液晶搭載 エントリーモデル|`https://kakaku.com/item/K0001187273/`|
|Dell|Inspiron 14 5000 プレミアム Core i5 10210U・8GBメモリ・256GB SSD搭載モデル|`https://kakaku.com/item/J0000031138/`|
|NEC|LAVIE Direct PM(X) 価格.com限定モデル Core i5・256GB SSD・8GBメモリ・13.3型フルHD液晶搭載 NSLKB684PXGZ1B|`https://kakaku.com/item/K0001200883/`|
|Lenovo|Ideapad S540 AMD Ryzen 5・8GBメモリー・256GB SSD・14型フルHD液晶搭載 81NH002PJP|`https://kakaku.com/item/K0001157209/`|
|HP|ENVY x360 15-ds000 価格.com限定 Ryzen 5&メモリ8GB&512GB SSD&フルHD&360度回転モデル|`https://kakaku.com/item/K0001167362/`|
|マイクロソフト|Surface Laptop 3 13.5インチ/Core i5/メモリ8GB/256GB SSD/Office Home and Business 2019付モデル|`https://kakaku.com/item/J0000031430/`|
|HP|Chromebook x360 14b-ca0000 価格.com限定 Pentium&メモリ8GB&64GB eMMC&フルHD・IPSタッチディスプレイ・360度回転搭載モデル|`https://kakaku.com/item/K0001219097/`|
|マイクロソフト|Surface Laptop 3 13.5インチ VGY-00018|`https://kakaku.com/item/K0001196626/`|
|マウスコンピューター|m-Book K700SN-M2SH2-KK 価格.com限定 Core i7/16GBメモリ/256GB NVMe SSD+1TB HDD/MX250/15.6型フルHD液晶搭載モデル|`https://kakaku.com/item/K0001183821/`|
|マイクロソフト|Surface Pro 7 タイプカバー同梱 QWT-00006|`https://kakaku.com/item/K0001215612/`|
|HP|Pavilion 15-cs3000 価格.com限定 Core i5&メモリ16GB&256GB SSD+1TB HDD搭載モデル|`https://kakaku.com/item/J0000032120/`|
|NEC|LAVIE Direct NS(A) 価格.com限定モデル AMD E2・500GB HDD・4GBメモリ搭載 NSLKB520NAFZ1B|`https://kakaku.com/item/K0001139211/`|
|Dell|Inspiron 15 3000 プレミアム Core i5 1035G1・8GBメモリ・256GB SSD搭載・Office Personal 2019付モデル(光学ドライブ付)|`https://kakaku.com/item/J0000031404/`|
|Lenovo|Lenovo YOGA S740 第10世代 Core i7・16GBメモリー・512GB SSD・14型フルHD液晶搭載 81RS0022JP|`https://kakaku.com/item/K0001201571/`|
|Lenovo|ThinkPad E495 価格.com限定 AMD Ryzen 5・8GBメモリー・256GB SSD・14型フルHD液晶搭載 パフォーマンス 20NECTO1WW|`https://kakaku.com/item/K0001220791/`|
|HUAWEI|HUAWEI MateBook D 15 BOHWAQHR8BNCNNUA|`https://kakaku.com/item/K0001244972/`|
|HP|ENVY x360 13-ar0000 価格.com限定 Ryzen 7&メモリ16GB&512GB SSD&フルHD&360度回転モデル|`https://kakaku.com/item/J0000032092/`|
|マウスコンピューター|NEXTGEAR-NOTE i5350SA1-M2SH2-KK 価格.com限定 Core i7/16GBメモリ/256GB NVMe SSD+1TB HDD/GTX1650/15.6型フルHD液晶搭載モデル|`https://kakaku.com/item/K0001168554/`|
|Lenovo|Ideapad S540 Core i5・8GBメモリー・256GB SSD・15.6型フルHD液晶搭載 81NE001BJP|`https://kakaku.com/item/K0001151375/`|
|マイクロソフト|Surface Pro タイプカバー同梱 KLG-00022|`https://kakaku.com/item/K0001057645/`|
|HP|HP 14s-dk0000 価格.com限定 AMD Ryzen5/8GBメモリ/256GB SSD/14型フルHD液晶搭載 スタンダードモデル|`https://kakaku.com/item/K0001187276/`|
|Dell|Inspiron 13 7000 プレミアム Core i5 10210U・8GBメモリ・256GB SSD搭載モデル|`https://kakaku.com/item/K0001188520/`|
|HP|Pavilion 15-cs3000 価格.com限定 Core i7&メモリ16GB&256GB SSD+1TB HDD搭載モデル|`https://kakaku.com/item/J0000032173/`|
|Lenovo|IdeaPad L340 Ryzen 5 3500U・8GBメモリ・SSD256GB・非光沢フルHD液晶搭載モデル|`https://kakaku.com/item/J0000032028/`|
|Dell|Inspiron 15 3000 スタンダード Core i3 1005G1・1TB HDD搭載モデル|`https://kakaku.com/item/J0000031336/`|
|富士通|FMV LIFEBOOK AH77/D3 2019年10月発表モデル|`https://kakaku.com/item/J0000031606/`|
|ASUS|E203MA 2019年10月発売モデル|`https://kakaku.com/item/J0000031983/`|
|マウスコンピューター|mouse F5-i5-KK 価格.com限定 Core i5/8GBメモリ/512GB SSD/15.6型フルHD液晶搭載モデル|`https://kakaku.com/item/K0001227841/`|


詳細ページでは、一覧ページでは得られない「価格前週比」「価格帯」「メーカー直販サイトURL」の情報が得られるので、これらを得ることにします。

詳細ページの1つで得たい情報の部分をスクレイピングして、変数とループを使ってその他の同じレイアウトの一覧ページからも同じ部分をスクレイピングします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/6d26aa87-355a-7e8d-b99a-29e33c2057e0.png)


# UiPathの場合
利用環境: UiPath Studio 2020.4.0-beta.472

>**注:** Studioのリボンにある「データスクレイピング」コマンドとかが使えそうと直感的には思うかもしれませんが、これは繰り返し要素がある場合にWebに限らず使うコマンドです。また、すぐ横の「画面スクレイピング」ではWeb上のテキスト取得はできますが、対象ウィンドウの変更ができないため、ここではアクティビティの中にある**「UI Automation」-「要素」－「制御」-「テキストを取得」**(Uipath.Core.Activities.GetValue) や**「UI Automation」-「要素」－「属性」-「属性を取得」**(Uipath.Core.Activities.GetAttribute) を使います。
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/883280bf-8cfc-0948-8a00-0568db8c91bc.png)

### 詳細ページ上で必要な要素を変数に取得する
1. 新規プロジェクトを作成、最初のURL `https://kakaku.com/item/K0001219355/` をInternet Explorerで開いておきます。またString型で変数を3つ作っておきます。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/8af0b3e6-0d42-0cd0-a534-9aab5919bcde.png)
2. アクティビティから「テキストを取得」を2つ、「属性を取得」を1つ、シーケンス内にドラッグ＆ドロップします。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/a9838ebd-5450-e3e2-1b7e-4076c59e538c.png)
3. その後「画面上で指定」をクリックして、Internet Explorer上でWebページ上のそれぞれの要素をクリックして指定します。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/7d0d3572-40ce-dbcd-a357-3d807960d925.png)
4. シーケンスの最後に「メッセージボックス」を追加して、`variable1`、`variable2`、`variable3`の内容を表示します。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/aa0cae2b-110b-1227-398d-30ac0eb76582.png)<br/>シーケンスを保存して実行すると、以下の通り、各要素が取得できていることがわかります。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/2d0e14b9-cd26-1a78-9f7d-93fd068c826a.png)

### 処理する詳細ページを一般化する
最初の詳細ページでは必要な情報を取得する仕組みができたので、他の詳細ページでも同じ情報が取得できるようにシーケンスを一般化します。

1. まず、新たに変数として`URL`と`Title`を追加します。既定値には最初の詳細ページのURLとWebページのタイトルを入れておきます。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/8379be7a-1ab5-3b97-a17f-4acedb6e0ad0.png)
2. 次に、**「UI Automation」-「ブラウザー」-「ブラウザーを開く」**(UiPath.Core.Activities.OpenBrowser)をシーケンスに追加、URLプロパティには変数`URL`を入れておきます。そして、今まで作った3つの「テキストを取得」「属性を取得」アクティビティを「ブラウザーを開く」のコンテナーの中にドラッグ&ドロップします。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/d331c3d2-ca80-f38d-707c-4aaeb6f0fa10.png)
3. 「テキストを取得」「属性を取得」アクティビティのそれぞれの**「セレクター」プロパティ**を開きます。最初のアクティビティのセレクターウィンドウでは、title属性に指定されているタイトルの代わりに**`{{Title}}`**と指定します。セレクターウィンドウの中では**`{{}}`**で囲まれた文字列は変数名とみなされます。また、aaname属性の中には固有の文字列が入っているためOFFにしておきます。(それによりセレクターには`omit:`という文字列が追加されます。) 2番目のアクティビティでも同様に変更します。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/387a6455-69ae-a13d-0e45-9a7247a30e5d.png)
4. 3番目のアクティビティはURLを取得するので指定方法が少し違い、aaname属性がないためtitle属性だけ同様に変数に変更します。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/c5ddc908-956f-9ace-25c5-19a48fa3c486.png)

これで保存して実行すると、指定した最初の詳細ページがInternet Explorerで開いた後、以下が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/efe4efb4-3aad-9e9c-5e93-9317b03c3019.png)

...「メーカー直販サイトURL」は正しく取得されていますが、残念ながら「価格前週比」「価格帯」は正しく取得されていません。

### さらにセレクターを編集して正しいコントロールを選択できるようにする
さて、ここからはちょっと難しいですが、UiPathの[セレクターの仕様](https://docs.uipath.com/studio/lang-ja/docs/about-selectors)を見ながら、セレクターの内容を最適化します。

まず、抜き出したい要素の近くのHTMLソースを見てみます。

```HTML:HTMLソース(id="priceBox"付近を抜粋)
<div id="priceBox" class="priceBoxWrap">
  <div class="priceWrap">
    <span class="newBrand">最安価格(税込)：</span>
    <div class="subInfoObj1">
      <p>
        <span class="priceTxt">&yen;52,830</span>
      </p>
      <div class="offer">
        <span class="priceRate">(前週比：<span class="priceNovary">±0 </span><img width="12" height="12"  src="https://img1.kakaku.k-img.com/images/itemview/item/icon_help2.gif" alt="" onclick="balloonOver()">)
          <span style="display:none" id="balloonMini">
            <span class="balloonMiniMain">7日前の最安価格との対比<a href="javascript:void(0)" onClick="balloonOut();return false;" title="閉じる"><img width="15" height="15" src="https://img1.kakaku.k-img.com/images/itemview/item/itemv_balloon_close.gif"></a>
            </span>
          </span>
          </span>
        <span class="priceRateG"><span class="priceRateLink"><a target="_blank" href="https://kakaku.com/item/K0001219355/pricehistory/">価格推移グラフ</a></span></span>
      </div>
...
  <div class="subInfoObj4">
    <span>価格帯：<span itemprop="lowPrice">&yen;52,830</span>～<span itemprop="highPrice">&yen;52,830</span> (<a href="https://kakaku.com/item/K0001219355/#tab"><span itemprop="offerCount">1</span>店舗</a>)</span>
    <span>メーカー希望小売価格：&yen;―</span>
  </div>
```

HTMLソースを見てみると、それぞれのアクティビティで以下のようにセレクターを変更すればよいことがわかります。

```HTML:1つ目のアクティビティ-変更後：parentid="priceBox"をやめてclass="priceRate"を入れる
<html title='{{Title}}' />
<webctrl class="priceRate" tag='SPAN' />
```

```HTML:2つ目のアクティビティ-変更後：parentid="priceBox"をやめてparentclass="subInfoObj4"を入れる
<html title='{{Title}}' />
<webctrl parentclass="subInfoObj4" tag='SPAN' />
```

これを保存して実行すると、以下の通り各要素が取得できていることがわかります。<br/>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/8dffdba0-207b-e1e2-312f-70c7f9c9470e.png)

これでセレクターの一般化ができました(^_-)-☆

### Excelファイルの内容をデータテーブル変数に読み込む
全詳細ページについての情報が入っている`d:\kakakucom.xlsx`を読み込んでUiPathのデータテーブル変数に読み込んでみましょう(^^)/

1. まず`DataTable`という名前のデータテーブル変数を作成します。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/72d22bfe-f338-970c-3046-d5ed69a1b40c.png)
2. **「アプリの連携」-「Excel」「Excelアプリケーションスコープ」**(UiPath.Excel.Activities.ExcelApplicationScope)をシーケンスの最初、「ブラウザーを開く」の前に挿入して「ブックのパス」プロパティに`d:\kakakucom.xlsx`を入力します。このコンテナーの中に**「アプリの連携」-「Excel」-「範囲を読み込み」**(UiPath.Excel.Activities.ExcelReadRange)をドロップします。Excelシート内のデータ範囲と、出力として`DataTable`を指定します。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/22e93781-0573-2c1b-ad8d-9db0f94d98e9.png)

これでExcelからの読み込み部分は完成です。

### WebページタイトルとURLでループして詳細ページを切り替える仕組みを作る
読み込んだ詳細ページの数だけループを回してみましょう(^^)/
UiPathにおける繰り返し処理は**「ワークフロー」-「制御」**にあるものが一般的ですが、データテーブル専用の繰り返し処理用アクティビティが**「プログラミング」-「データテーブル」-「繰り返し(各行)」**(UiPath.Core.Activities.ForEachRow)にあるので、これを「Excelアプリケーションスコープ」と「ブラウザーを開く」の間にドラッグ＆ドロップします。

そしてコレクションに'DataTable'を指定して、「ブラウザーで開く」と「メッセージボックス」を、この中の「Body」コンテナーの中にドラッグ＆ドロップして移動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/a8ee46b0-2b44-0fb8-742d-0d17d5d40774.png)

Bodyコンテナーの中の先頭に**「ワークフロー」-「制御」-「複数代入」**(Uipath.Core.Activities.MultipleAssign)を挿入して以下の式をそれぞれ代入します。


その後に「メッセージボックス」アクティビティを入れて、`Title`と`URL`に入った値を表示します。

```VisualBasic:Title
Title="価格.com - " + iif(Left(row(1).ToString(),Len(row(0).ToString()))=row(0).ToString(),"",row(0).ToString()+" ").ToString()+row(1).ToString()+" 価格比較"
```
ちょっと複雑な式ですが、row(0), row(1) はゼロから始まるデータテーブル行の要素で、時々商品名の先頭にメーカー名が既に入っている場合があるので、それをチェックしてその場合は商品名を追加しないようにします。データテーブル行はObject型なので、.ToString()で文字列型に変換する必要があることに注意してください。また、iif関数も最後は.ToString()で文字列型に変換する必要があります。

```VisualBasic:URL
URL=row(2).ToString()
```
row(2)はURLの要素なので、`URL`に代入します。

以上で読み込み部分は完成です。

### CSVファイルへの結果の書き込みを行う
さて、詳細ページから得られた情報`variable1`、`variable2`、`variable3`ですが、`DataTable`に列を3つ追加して格納したうえで`d:\kakakucom_output.csv`にCSVファイルとして書き込むことにします。

1. 「Excelアプリケーションスコープ」と「繰り返し」の間に**「プログラミング」-「データテーブル」-「データ列を追加」**(UiPath.Core.Activities.AddDataColumn)を3つ追加して、入力にデータテーブル=`DataTable`、TypeArgument="String"、列名は「価格前週比」「価格帯」「メーカー直販サイトURL」を指定します。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/8adb00a3-b671-fd0b-7597-d2a7ac19758b.png)
2. 「繰り返し」の後、シーケンスの最後に**「アプリの連携」-「CSV」-「CSVに書き込み」**(UiPath.CSV.Activities.WriteCsvFile)を追加します。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/5c37c2f4-cefc-4a95-bee7-c03d3ecb2d19.png)
3. 繰り返し内の現在の位置を指し示すInt32型変数`idx`を作成し、「繰り返し」の出力の「現在のインデックス」に指定します。 <br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/63ca3386-eb35-fe44-e266-f8d2d03e7a35.png)<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/a5a630e4-c421-1b8a-00d7-7eda5ba0de6b.png)
4. 「繰り返し」の中、「Body」コンテナーの「ブラウザーを開く」の後ろに「複数代入」アクティビティを挿入。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/031f751a-d550-2935-37ce-3078bb1cc6a4.png)
以下の代入を行います。

```VisualBasic:DataTable(idx)(3)
DataTable(idx)(3)=variable1
```

```VisualBasic:DataTable(idx)(4)
DataTable(idx)(4)=variable2
```

```VisualBasic:DataTable(idx)(5)
DataTable(idx)(5)=variable3
```

データテーブル変数の要素への参照は**`DataTable(行)(列)`**のように行います。インデックスはいずれもゼロから始まります。

また、繰り返しInternet Explorerが起動するとウィンドウが多くなりすぎて邪魔なので、ブラウザーは終わったら消すことにします。ブラウザー変数 (UiPath.Core.Browser) `Browser`を定義して、「ブラウザーを開く」アクティビティの出力「UIブラウザー」プロパティに指定しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/1fdc1cfd-6cf7-990b-aaa5-b84fdfc3e02e.png)
また、「ブラウザーを開く」の後ろに**「タブを閉じる」**(UiPath.Core.Activities.CloseTab)を挿入、入力「ブラウザー」プロパティに`Browser`変数を指定します。


これで保存して実行してみましょう(^_-)-☆

### ページによっては要素が存在しない場合のエラー処理を加える
1ページ目、2ページ目とブラウザーが開いて実行されていきますが、今回の場合、2ページ目の途中で以下のエラーで止まってしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/7a5a62b0-ba45-8e7e-b392-52b45d79cd05.png)

これは2ページ目には「価格帯」の情報がないためです。このように、「テキストを取得」「属性を取得」アクティビティは、要素がないときにエラーが出てしまいますので、3つとも、プロパティで「エラー発生時に実行を継続」=trueと指定しておきましょう。また、エラーが発生すると既定だと10秒くらい待ってしまうので、タイムアウトを2000ms (2秒)くらいに設定しておきましょう(^_-)-☆
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/774eae4b-102d-07cf-962d-92d744e23990.png)

また、「ブラウザーを開く」の一番最初で、ループ毎に変数を空にして初期化するようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/4a0bf060-fd19-d02e-fb09-7a177bff598a.png)

### 完成!
これですべて完成です。「メッセージボックス」アクティビティはコメントアウトしておきましょう。
シーケンスは以下の通りになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/e7134cc0-cb43-2f08-bac0-03c538198ecd.png)

["Scraping"プロジェクトをGitHubからダウンロードする](https://github.com/o-kura/UiPath/tree/master/Scraping)

保存して実行すると、`d:\kakakucom_output.csv`に以下のようなCSVファイルができています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/83b85d28-de5f-25c9-e260-f251486eef97.png)

# Automation Anywhereの場合
利用環境: Automation Anywhere Enterprise 11.3.3.1 (Build 19100531)

ちょっと記事が長くなったので、次回に分けて今度はAutomation Anywhereの場合について解説します(^^♪

* [【🔥UiPath vs Automation Anywhere🔥】同一書式の複数Webページから情報を抜き出す (2) - Automation Anywhereの場合](https://qiita.com/Okura_/items/ab5ae9d6680338dfcf2d)