【Uipath】指定サイトの画像を一括ダウンロードする方法|RPAデモ

サイトのURLを入力すると、サイト内の「jpg,png」ファイルを全てダウンロードするロボットを紹介します。

動画解説

目次


1.必要なアクティビティを確認
2.ロボットの作業工程全容
3.各工程解説

1.必要なアクティビティを確認

今回は”HTTPリクエスト(HTTP Client)”というアクティビティを使います。
デフォルトでは入ってないため、パッケージを管理からUipath.Web.Activitiesをインストールしましょう。

パッケージを管理

UipathはGoogleChromeのアドオンみたいに、いろんな機能を追加できる拡張性も魅力なので、ぜひ色々なアクティビティを試してみましょう。

2.ロボットの作業工程全容

ロボットの作業工程全容


① 指定サイトのhtmlソースを取得
② htmlソースからダウンロードする画像パス一覧を作成
③ ダウンロードした画像を保存するフォルダを作成
④ 画像パス一覧をもとに全てダウンロード

3.各工程解説

今回はデータテーブルをUipathにて扱います。
UipathはVB.netというプログラミング言語を使用しますので、少々知識と慣れが必要ですが、頑張って理解しましょう。

① 指定サイトのhtmlソースを取得

指定サイトのhtmlソースを取得_URL取得
指定サイトのhtmlソースを取得_source取得

アクティビティ:Input Dialogを挿入
タイトル:”画像取得”
ラベル:“取得したサイトのURLを入力してください。”
結果:変数”URL”

アクティビティ:Http Clientを挿入
Webサイトからの情報取得はこのアクティビティを用います。

HTTPリクエストウィザード_リクエストビルダー

エンドポイント:変数”URL”

HTTPリクエストウィザード_応答

リソースをダウンロードにチェック⇒保存場所の指定
ファイルの出力は任意ですが、ソース文はこれから利用するので、同時に変数への格納も忘れずに。
プロパティから結果を変数”source”に格納します。

② htmlソースからダウンロードする画像パス一覧を作成

htmlソースからダウンロードする画像パス一覧

アクティビティ:Assignを挿入
計算式 list=source.split(“”””c)
「.Split()」は文字列を分割し配列に格納することができます。
変数”list”の型は配列(Array of[T])です。
区切りたい文字をダブルクォーテーションで囲みましょう。
区切りたい文字自体がダブルクォーテーションの場合、ダブルクォーテーション2つで表現します。(つまり””””と4つ入力)

アクティビティ:Assignを挿入
計算式 URLsplit=URL.Split(“/”c)
変数”URLsplit”の型は配列(Array of[T])です。区切り文字はスラッシュです。

データテーブルを構築
データテーブルを構築_要素

アクティビティ:Build DataTableを挿入
”要素”列1つのデータテーブルを用意します。
プロパティの出力にデータテーブル”listtable”を設定します。

繰り返し(コレクションの各要素)

アクティビティ:For each(コレクションの各要素)を挿入
コレクションに配列”list”を、要素に変数”item”を設定する。
配列”list”に含まれるデータを順番に変数”item”に格納して本体を実行、データの数だけループします。

本体の内容:条件分岐を挿入
条件式:left(item.ToString,4)=”http”
Left(String型の変数,文字数)は、文字数分だけ文字列の左側を取得します。
データの頭から4文字分が”http”かどうかをフィルターしています。

True⇒データテーブル”listtable”に変数”item”を追加する。
False⇒データテーブル”listtable”にURLsplit(0)+”//”+URLsplit(2)+item.ToStringを
追加する。

要するに、”http”がないデータには、プロトコル://ドメイン名を加えてデータテーブルに追加するということです。

データテーブルをフィルタリング
フィルターウィザード

アクティビティ:Filter DataTablesを挿入
入力データテーブルにデータテーブル”listtable”を入力
出力データテーブルにデータテーブル”listtable”を入力(⇒上書き)
フィルター条件1:列”要素” 操作Ends With 値“png”「”png”で終わる場合」
フィルター条件2:列”要素” 操作Ends With 値“jpg”「”jpg”で終わる場合」
保存にチェックすることで、条件にあったものだけ抽出されます。

重複行を削除
アクティビティ:RemoveDuplicateRowsを挿入
データテーブル”listtable”に重複したデータがある可能性があるので削除しておきます(同じ画像をダウンロードするのを防ぎます)。

CSVに書き込む
アクティビティ:WriteCsvFileを挿入
上段にファイルの出力先、ファイル名を選択する(ファイルパスを入れても可)。
下段に出力するデータテーブルを入力
これはダウンロードリストとして出力するだけです(任意)。

③ ダウンロードした画像を保存するフォルダを作成

AB代入

アクティビティ:Assignを挿入
計算式 フォルダ名=now.ToString(“MMddHHmmss”)
画像をまとめて保存するフォルダをあらかじめ作成するため、フォルダ名を設定します。Now.ToStringは月/日/年 時:分:秒なので、表示形式を指定しています。
MM=月、dd=日、HH=時、mm=分、ss=秒です。

ディレクトリを作成
アクティビティ:CreateDirectoryを挿入
作成するパスを設定します。保存したいところを好きに設定しましょう。

④ 画像パス一覧をもとに全てダウンロード

繰り返し(各行)

アクティビティ:ForEachRowを挿入
コレクションにデータテーブル”listtable”を、要素に行データ”row”を設定する。
データテーブル”listtable”に含まれるデータを順番に行データ”row”に格納して本体を実行、データの行数だけループします(出力にループ回数”i”を設定します)。

本体の内容:Http Clientを挿入
エンドポイント:row(0).ToString
row(0)は行データrowの0列目⇒”要素”列ということ。
row(“要素”)と記述しても同じです。

リソースパス:(略)+フォルダ名+”\”+i.ToString+right(row(0).ToString,4)
(略)はあらかじめ用意したフォルダのパスになります。
Right(String型の変数,文字数)は、文字数分だけ文字列の右側を取得します。
ダウンロードURLの右から4文字分は”.png”か”.jpg”になります。

エラー発生時に実行を継続:Trueを設定
Trueにすることで、ダウンロードに失敗しても次へループします。
これにより、存在しないダウンロードURLがリストに存在する場合もロボットが停止せずに動作します。

ロボット実行結果

ロボット実行結果
無事一括ダウンロードが完了し、0,1,2,3,,,,と画像が保存されました。


UiPathを利用すれば、これまで手作業で繰り返していた業務も自動化できるため、大変便利です。個人でも無料で導入できるソフトですので是非利用してみてください。
楽しいRPAライフを。。

RPAツール「UiPath」を使ったロボット作成ハウツー記事を紹介

2019.09.27

sweeep|請求書AI-OCR

請求書の会計処理を自動化します
請求書AI-OCR「sweeep」

面倒な請求書の会計処理をAIで自動化。100枚をたった3分で処理できます。月末に貯まった請求書を一掃しましょう。