Webブラウザをスクレイピングするのに各種方法がありますが、VBAを使用して手軽にWebブラウザ操作が可能になるSeleniumBasicについて使い方を解説していきます。ブラウザはGoogle Chromeを利用します。
主にVBAの基礎的な動作が理解できる方を対象にして解説していきます。VBAを勉強したい方は以下記事で本を紹介しています。SeleniumBasicの解説を読むために、基礎編は入門用の本、応用編は初級用までの本を読み終えれば大体理解ができるかと思います。
Webブラウザをスクレイピングするのに各種方法がありますが、VBAを使用して手軽にWebブラウザ操作が可能になるSeleniumBasicについて使い方を解説していきます。ブラウザはGoogle Chromeを利用します。
主にVBAの基礎的な動作が理解できる方を対象にして解説していきます。VBAを勉強したい方は以下記事で本を紹介しています。SeleniumBasicの解説を読むために、基礎編は入門用の本、応用編は初級用までの本を読み終えれば大体理解ができるかと思います。
SeleniumBasicとは
SeleniumBasicの前にSeleniumについて説明します。Seleniumは各言語(Java、Ruby、C#、Python等)で作成されたWebアプリケーションのテストを自動化するために開発されたフレームワークです。開発、運用はSeleniumコミュニティ内のボランティアによって維持されます。 開発元のホームページは以下ページです。
Seleniumの開発目的は、主にWebアプリのテストですが、Webブラウザ操作をプログラミング言語で操作できるため、Web操作の自動化ができ、業務効率化に役立てることができます。PythonではWebブラウザの自動化が人気がある様です。
SeleniumBasicは、ExcelVBA用にSeleniumのクラスを利用できる様に用意されたモジュールです。バージョンは、2016年3月にv2.0.9.0で止まっています。ExcelVBAでWebアプリケーションの開発をすることがないので、SeleniumBasicでWebアプリケーションのテストをすることにあまり意味はありません。各Webアプリケーション開発言語に合わせてSeleniumが対応しているためです。したがって、ここで解説するSeleniumBasicの利用目的は、主にWebブラウザ操作の自動化する、といった業務効率化となります。
メリットデメリット
SeleniumBasicを利用するメリット、デメリットを以下のとおりです。
メリット | デメリット |
---|---|
Webブラウザ操作が自動化できる タスクスケジューラ+PowerShellで定期実行できる 大量のクリック、文字入力動作を自動化できる よくあるRPAツールとは違い、基本的には待機の事を細かく考える必要がない。 | VBAの知識が必要 新たにSeleniumのクラス、メソッドを覚える必要がある 定期的にWebDriverを更新しなければならない SeleniumBasicを対象にした本がない |
デメリットの内、いくつかはこのサイトで解決することができます。SeleniumBasicの基本動作を学ぶ上では特に見る必要もありませんが、興味があれば以下項目をクリックして開いて確認してみてください。
SeleniumBasicデメリットの解決方法(ここをクリック)
- 定期的にWebDriverを更新しなければならない
-
SeleniumBasicは、Google Chromeのバージョンアップに合わせて、ChromeDriverの更新をしなければなりません。(Edge等他のブラウザでも同様です。)
いつChromeがバージョンアップするなんてわかりませんし、ある日突然ChromeブラウザとChromeDriverのバージョンが不一致でSeleniumBasicが立ち上がらなくなることがあります。手動で更新するのが面倒ですので、定期的に更新実行する手段を以下記事で紹介しています。タスクスケジューラとPowerShellの操作が必要になります。 - SeleniumBasicを対象にした本がない
-
Seleniumについて扱った本は日本で1冊あるのですが、VBA向けの解説はされておりません。SeleniumBasicで動作するクラスの説明はチュートリアル等であるのですが、実際にどの様なコードで実行ができるのか、使用例が網羅された本がありません。
このサイトを立ち上げた理由の一つにSeleniumBasicのリファレンスを作り上げる事があります。以下ページでSeleniumBasicの動作を全て確認したリファレンスがありますので、何かコードで迷ったり、分からない項目があれば調べてみてください。
Webスクレイピングの注意点
注意点として、どのページでもWebスクレイピングをして良いという訳ではありません。記事作成時点ではAmazonや楽天等の大手ECサイトはWebスクレイピングの利用が利用規約で禁止されています。操作対象としようとしているサイトがWebスクレイピングを許容しているかどうか事前に確認しておく必要があります。
環境構築
SeleniumBasicを利用するにはExcelVBAを使用しますが、環境構築のため以下作業をします。
- SeleniumBasicのインストール(管理者権限で実行)
- WebDriverを更新(以後、GoogleChromeのバージョンアップに合わせて更新)
具体的な作業内容は以下記事を参照ください。
SeleniumBasicの操作 基礎編
基本的なブラウザ起動操作
Webスクレイピングを自動化するにしても、基本的な動きは通常私たちがブラウザを操作する動作と変わりありません。Webブラウザの流れは、「ブラウザの起動」⇒「Web操作」⇒「ブラウザを閉じる」が基本になります。
ブラウザの起動 |
Web操作 |
ブラウザを閉じる |
真中の「Web操作」で多くのクラスやメソッドが用意されていますが、ここではまず「ブラウザの起動」と「ブラウザを閉じる」操作を体感してもらいます。以下、記事のページでブラウザの基本動作を紹介しています。SeleniumBasic実行の初めの一歩になります。
第2回記事のスクリプトでブラウザ起動が成功すれば、SeleniumBasicを実行する環境が整っています。ブラウザ操作フローの「ブラウザの起動」⇒「Web操作」⇒「ブラウザを閉じる」は各々操作に対応するSeleniumBasic用オブジェクトを設定します。
- ブラウザの起動
-
WebDriverオブジェクトの設定(変数例:Driver)
- Web操作
-
WebElementの設定、メソッド実行(変数例:Elm, Ele)
- ブラウザを閉じる
-
WebDriverオブジェクトを破棄する(Driver.Quit, Set Driver = Nothing)
上記の様に設定した変数に対して各種メソッドの実行(クリック、文字列入力)やプロパティの取得(リンクテキストの取得)を行います。
Web操作
ブラウザ操作の中心である「Web操作」について解説します。SeleniumでWeb操作する基本フローは、対象のホームページに移り、「Web要素のキャッチ」⇒「クリック、文字列入力等」といった操作命令を出していきます。このWeb要素をキャッチしてメソッド実行する、を繰り返すことがSeleniumBasicで操作するWebスクレイピングになります。Web要素のキャッチの他、ウィンドウの移動も重要なWeb操作の一つになります。
ブラウザの起動 |
Web操作 |
ブラウザを閉じる |
Web要素のキャッチ |
ウィンドウの操作 |
フレームの移動 |
スクリーンショットの取得 |
HTML情報の取得 |
Cookie情報取得 |
クリック |
文字列入力 |
チェックボックス操作 |
ドラッグアンドドロップ |
ドロップダウンリスト選択 |
ダイアログボックスの操作 |
テーブルデータの取得 |
ファイルダウンロード |
Web要素のプロパティ取得 |
各々操作方法をまとめた記事がありますので、基本的なSeleniumBasicの操作方法を学ぶため、以下順番で記事を確認してみてください。
ブラウザ起動条件の設定
ブラウザ操作をする際、ブラウザ起動条件を事前に設定することができます。起動条件の代表的な例を以下フロー図にまとめています。「ウィンドウ起動条件」や「Chrome環境設定」は、ブラウザ操作する上で重要な設定ですので覚えておいて損はありません。
「ウィンドウ起動条件」の設定は、エラー回避やバックグラウンド処理に役立ちます。
「Chrome環境設定」は、Webスクレイピングでダウンロードをする際に設定します。
ブラウザの起動 |
Web操作 |
ブラウザを閉じる |
ウィンドウ起動条件 |
Chrome環境設定 |
プロファイルの選択 |
拡張機能の付与 |
リモートデバッグ設定 |
Basic認証設定 |
バックグラウンドで起動 |
シークレットモード起動 |
画面最大化で起動 |
ダウンロードフォルダ設定 |
ダウンロードダイアログボックスの非表示 |
PDFファイルのダウンロード設定 |
各々設定方法をまとめた記事がありますので、基本的なSeleniumBasicの操作方法を学ぶため、以下順番で記事を確認してみてください。
SeleniumBasicの操作 応用編
SeleniumBasicの基本的な操作ができる様になった後、以下記事を習得すれば、さらにSeleniumBasicのクラスやメソッドを活用し、より多くの操作ができる様になります。
基礎編では「ブラウザの起動」と「Web操作」を分けて解説しましたが、応用編では分けずに解説していきます。
ブラウザの起動、Web操作
- 第1回:ダイアログボックスの操作
- 第2回:キー入力の一括操作(Actionsクラス活用)
- 第3回:テーブルデータの取得
- 第4回:Web要素キャッチの待機処理(準備中)
- 第5回:ファイルダウンロード(準備中)
定期実行の設定
SeleniumBasicでは、ChromeDriverを定期的に更新しなければならなかったり、GoogleChromeのプロファイルがフォルダに蓄積され、ストレージを圧迫してしまったりします。これらの作業を気が付いた時に手動で作業するのは面倒くさいし、覚えておくのは大変です。せっかくブラウザ操作を自動化したのに、この様なメンテナンス作業を手動でやるのは本末転倒とも言えます。これらの手動作業の自動化する方法を以下リンクで解説しています。
その他便利ツール
一定期間SeleniumBasicを扱っていなければ、コマンド名や役割を忘れてしまいます。SeleniumBasicで用意されているクラスをまとめたリファレンスやエラー対象方法をまとめたエラー事例集を以下リンクで解説しています。