ナレッジベース

ウェブサイトからのファイルダウンロード

はじめに

業務自動化の過程において、ウェブサイト (ウェブアプリケーション) として提供される業務システムからのファイルのダウンロード、あるいは、インターネット上のウェブサイトで公開されているファイルのダウンロードを行い、業務要件に応じてそのファイルを有効活用したいケースは多々発生します。今回、ファイルダウンロードの自動化に関して、ウェブサイトの特性に応じたダウンロードの自動化例を2点、ご紹介させて頂きます。

ファイルのダウンロードにおいては、ウェブアプリケーションサーバの仕様や実装により、その自動化の手法を検討し、実装を工夫する必要があります。大きくは、以下の2つのケースに分かれます。
 
  • ・固定のURLから都度ファイル取得できる場合 (静的なリンクの場合)
  • ・URL が変わる、あるいは、セッションやクッキーの状況に応じてウェブサイトの挙動が変わる場合 (動的なリンクの場合)

もう少し、動的なリンクと呼んでいる URL に関して、詳細な説明させて頂きます。まず、URL が変更される理由として、URL の構成において、日付・日時、セッションID、特定の業務に紐づくIDなどが含まれていることに起因します。次に、一部のウェブサイトでは、URL に変更はないものの、以下の制約が存在するものがあります。これらに関しましても、「動的なリンクの場合」の手順に従い、ダウンロード処理の自動化が可能となります。
 
  • • ファイルのダウンロードにおいて事前にユーザー認証を必要とする
  • • ブラウザーからの接続であること (HTTP通信のヘッダーでブラウザーからの接続であるかどうかが確認されるもの)
  • • ブラウザーにおいて、クッキーの使用を許可している

今回は、気象庁のウェブサイトから、「最新の気象情報 (24時間) 」の CSV ファイルをダウンロードする処理を自動化して行きます。

気象庁のウェブサイト

download-files-from-website-image1

静的なリンクの場合

気象庁のウェブサイトでは、「最新の気象情報 (24時間) 」のCSVファイルは、現時点 (2018年4月20日) で、下記のURLにてアクセスが可能なものとなります。IE であれば、リンク対象において、右クリックよりプロパティを選択すると、ダウンロード対象となるファイルのアドレス (URL) の情報が参照できます。

固定のURLからファイルをダウンロードする場合、自動化の処理は簡単なものとなります。HTTP Request アクテビティを使用することで、ファイルのダウンロードから保存までを一度に行えます。当アクティビティは、ブラウザーを起動することなく直接 HTTP レベルの通信を行うことでファイルのダウンロードを実行します。

まず、HTTP Request アクテビティをデザイナーパネルのフローへドラッグ&ドロップすると、HTTP Request Wizard が表示されます。
 
  • • Request Builder タブの End Point へダウンロード対象となる CSVファイルの URL を入力します
  • • その他の項目は、基本的にはデフォルトで稼働します。ダウンロード対象となるウェブサイトの URL で、特殊な要件がある場合、その他の項目の設定を見直します
 

静的なリンクの場合


次に、Response のタブへ移動します。
 
  • • 下部の Download Resource のチェックボックスをチェックします
  • • ダウンロード後のファイルのパスを指定し、OK ボタンを押し Wizard での登録が完了します

download-files-from-website-image3

 
最後に、当アクティビティを実行し、Download Resource で入力したファイルのパスにファイルがダウンロードされていることを確認します。
 

動的なリンクの場合

ダウンロードするファイルの URL が固定でない、ログイン認証を伴う業務用のウェブサイト、あるいは、対象となる URL が事前に特定できないダウンロードを実行したい場合は、ブラウザーを用いて自動化を実施することをお勧めいたします。今回はブラウザー Internet Explorer 11を使用して説明致します。自動化においては、ダウンロードした Excel ファイルや CSV ファイルなどを後続の処理で参照する場合が多いと思いますので、右クリックで「対象をファイルに保存」の機能を用います。これにより、特定のファイルパスにファイルをダウンロードすることが可能となり、以降の過程でそのファイルを、ロボットが利用できる実装となります。
 
再度、気象庁のウェブサイトを利用し、手順を説明していきます。ここでは、前述の静的なリンクの場合と同じファイルをダウンロード対象としますが、こちらのファイルは URL 可変であり、事前に知らない前提で自動化を進めるものとします。

事前に、Assign アクティビティを追加し、ダウンロード以降の処理でCSV ファイルが取り扱えるよう distPath という String 型の変数に保存したパス情報を使用します。こちらはファイル名まで含めたフルパスとしておきます。
 download-files-from-website-image4

これより、ブラウザーを用いたダウンロードの自動化の実装となります。はじめに、Open Browser アクティビティにて、ダウンロード対象となるファイルが存在する下記 URLを指定し IE を起動します。プロパティペインでは、Output 項目の UiBrowser に browserというBrowser型のオブジェクトを指定しておきます。
 
download-files-from-website-image5

次に、ダウンロード対象のリンクを右クリックする為の操作を実装していきます。Open Browser アクティビティのDoブロック内に、Click アクティビティを追加します。Indicate on screen をクリックし、オブジェクトを選択するモードに移り、IE に表示されている「ダウンロード(24時間降水量)」をクリックします。
download-files-from-website-image6
download-files-from-website-image7

 
当該アクティビティのプロパティペインにおいて、右クリックの操作とする為、MouseButton の項目を BTN_RIGHT へ変更します。
 
download-files-from-website-image8

再び、Click アクティビティを追加し、Indicate on screen より、IE に移り、再度リンク対象である「ダウンロード(24時間降水量)」の上で、F2 を押した状態で右クリックし、そのまま3秒間待ちます。すると、コンテキストメニュー (右クリックで表示されるメニュー) が表示されますので、「対象をファイルに保存」をクリックします。
 download-files-from-website-image6
download-files-from-website-image9
 
以降、IE において、ファイル保存のダイアログが表示されますので、Type Into アクティビティにて、ダウンロード先のファイルパスへ事前に用意した distPath という変数を指定し、Click アクティビティにて、「保存」ボタンをクリックするアクティティを作成し完了となります。
 download-files-from-website-image10

以上で、ダウンロードの処理の実装が完了となります。以降、ブラウザーを使用しない場合は、Close Tab アクテビティにて browser 変数を指定し、ブラウザタブを閉じる処理を加えフローを終了します。

最後に、フローを実行し、distPath 変数に指定したファイルパスに、ファイルがダウンロードされていることを確認します。