VBA×ChromeでWebスクレイピングを始める
Webからテキストや画像などの情報を取得する方法の1つにWebスクレイピングがあります。
特定の手法でWebにアクセスし情報を取得したりWeb内のテキストボックスに情報を入力することができます。
このWebスクレイピングですが数年前までは作業を実行する際に使用される主なブラウザはIEでした。
しかしMicrosoftさんは2022年6月をもってInternetExplorerのサポートを終了しています。
この事からEdgeやChromeなど他のブラウザを使った別の方法が求められるようになってきました。
本記事では今後定番となるSeleniumbasicを使ったWeb情報を取得する方法について紹介、解説していきます。
読み方はセレニウムベーシックです。英語表記の方が使用頻度が高いです。できるだけ英語名で覚えてください。
Webスクレイピングはやり方さえ分かればそんなに難しくないですよ。
以降の記事の中でアプリのダウンロードからコードの書き方まで一貫して情報提供します。
この記事でわかる事
大きく分けると5つです。
- Webスクレイピングの概要がわかる
- Seleniumbasicの概要がわかる
- 動画で使用感をイメージできる
- 環境構築がわかる
- 簡単なコードの書き方がわかる
Enjoy Excel
WebスクレイピングやSeleniumbasicとは何かを間単に説明してから初期設定(環境構築)を説明します。
初期設定(環境構築)は非常に手間がかかります。よって丁寧に解説していきます。
最後に出来るだけ間単にコードを書く為のヒントになる記事を何点か用意しています。
継続して読んでいただくとWebスクレイピングができる様になります。
具体的に書くと「VBAを使ってExcelからChromeやEdgeを操作できる」様になります。
関連書籍:この本で勉強しました
Webスクレイピングに興味があったのですがどうやって勉強したら良いのか分かりませんでした。
色々調べてく中でWebスクレイピングについて分かりやすく書いている本を見つけました。
Webスクレイピングについて書かれているのは約20ページほどですがかなり充実しています。
初期設定やWeb上の値を取得する為のメソッドがリスト化されている等非常に見易いです。
こちらの書籍は電子書籍がおすすめです。
Webスクレイピングについて
Wikipediaの情報です。
ウェブスクレイピング(英: Web scraping)とは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと
Wikipedia
http://で始まるWebサイトから情報を抽出する為の方法、行為をWebスクレイピングと呼んでいます。
Seleniumbasicについて
簡単に言いますと「ExcelからWebブラウザを操作するためのツール」です。
Webスクレイピングと絡めて会話で使う際には以下のような使い方をします。
Seleniumbasicを使ってWebスクレイピングする
ExcelからみたSeleniumの位置付けとしては一般的にはライブラリと言われるものに該当します。
ライブラリがイメージ出来ない方は以下引用をご覧ください。
ライブラリ(英: library)は、汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。
ライブラリと呼ぶときは、それ単体ではプログラムとして動作させることはできない、つまり実行ファイルではない場合がある。
ライブラリは他のプログラムに何らかの機能を提供するコードの集まりと言える。
Wikipedia
さらにライブラリを具体的に表現します。VBAでSeleniumを使う際は参照設定を使います。
インストールするとVBAの参照設定でSelenium Type Libraryが選択出来る様になります。
参照設定で使えるとライブラリとはどんなものかイメージできる方も出てくるかもしれません。
連想配列で使うMicrosoft Scripting Runtime等と同じ様な位置付けです。
後付けで出来る事が増えるツールといった感じです。
Seleniumbasicは後付けでExcelからWebブラウザが操作できるライブラリという事になります。
処理がイメージ出来るような画像を用意
端的に申し上げますと「ExcelからSeleniumbasic経由でWebスクレイピング」をする事になります。
マクロのプロシージャからSeleniumbasic経由で各ブラウザのドライバーに指示を出します。
ドライバーがマクロからのリクエスト(コード)に対応した操作をブラウザに対して行います。
ドライバーがWeb環境との橋渡し役になり必要な情報を取り出してくるという仕組みです。
こんな使い方もあります
スクレイピングはWebサイトから情報を抽出する為の方法、行為と書きましたがこんな使い方もできます。
Webサイトに設置してあるボタンをクリックしたり検索窓に文字を入力する事も出来ます。
よって人が実際に作業するようなことも再現できます。
- Google翻訳に文字を入力して翻訳された情報を取り出す
- 各種WebAppへのログインを代行させる
- 天気予報や株価のサイトで個別情報を入力してリアルタイムで生成されたデータを取り出す
こちらの記事では1クリックでYahooのニューストピックスを全て取得する動画を用意しています。
こんなことも出来ますVBAを使ってWebからデータを取得|Webスクレイピングとは?できる事を教えて
動画
私のブログ内の記事から情報をスクレイピングした動画を用意しました。
簡単ですがスクレイピングがどういったものか分かる様になっています。
BGM付です。再生時は気をつけてください。
複数のURLから情報を取得できる
Webスクレイピングは1度で複数のURLにアクセスして情報を取る事が出来ます。
コードが書ける人であればWeb上にある情報の掴み方だけ覚えれば何でも出来る様になります。
慣れれば比較的簡単にスクレイピング可能です。これで便利さは認識いただけましたね。
難易度は高めです
予想通りかもしれませんがVBA初心者で知識がまだ定着してない方には難しいです。
しかし必要最低限の機能さえおさえれば比較的簡単にWebの情報を取得出来るようなツールになっています。
無料で登録も不要、Seleniumbasic用の特殊な学習も不要というメリットも多いツールです。
しかしデメリットも何点かあります。
デメリットとして1番大きいのは「環境構築とメンテナンスの手間」が挙げられます。
環境構築はかなり大変
Seleniumbasicにおける環境構築はかなり手間がかかります。
コードを書くところまで進めずに断念してしまう人が多いです。
加えて1回設定したらOKというわけにはいきません。
一定のタイミングでメンテナンスが必要という非常に手間のかかる環境の中作業をする必要があります。
「面倒だから避けよう」ではなく「面倒だからこそしっかり解説」していきます。
以降の記事を読んでいただければ環境面の心配はありません。
環境構築
先にやらないといけない事を書き出しておきます。
- 1Seleniumbasicのダウンロードとインストール
アプリのDLとインストールについて順を追って説明
- 2Chromeのダウンロードとインストールとバージョン確認
ブラウザ(Chrome)のダウンロードとインストールを行います
ブラウザのバージョンに対応したドライバーを用意します
- 3Chromeドライバーをダウンロード
ブラウザのバージョンと同じドライバーをDL
- 4Chromeドライバーを上書保存
Seleniumがデフォルトで持っているドライバーを上書き
- 5VBEの参照設定で必要なライブラリを選択
Selenium Type Library を選択
5番のVBEの参照設定はコーディング時に「実行時バインディング」にする事でマストではなくなります。
基本は上記4点は必須だと思って下さい。
実行時バインディングが分からない人は作業内容の1から5までもれなく準備してください。
続いて私のPC環境について情報展開しておきます。
重要なのは自動で動かすことを想定しているブラウザの種類と自PCに搭載されているOSの種類です。
これをふまえて作業を紹介していきます。
Edgeでの環境構築についても紹介しています。このまま記事を読み進めてください。
Seleniumbasicのダウンロードとインストール
まずはSeleniumbasicのダウンロードです。以下URLにアクセスしましょう。
以下TOP画面です。
少し下の方を見ていくと太字のDownloadという文字が出てきます。その下のRelease pageをClick。
次の画面では中断よりやや下AssetsからSeleniumBasic-2.0.9.0.exeを選択。
これはダウンロード時のバージョンで最新のものを選択してください。
インストーラーをダウンロード出来る様になります。作業し易い様にデスクトップにダウンロードしましょう。
インストーラーをClickすると以下のような画面が起動してきます。Nextを押下。
次のダイアログボックスではI accept ・・・ にチェックを入れます。その後Nextを押下。
WebDriver for Chrome にレ点を入れます。続いてIEのレ点を外しましょう。その後Nextを押下。
既にインストール済みだとこのようなダイアログボックスが立ち上がります。
通常は出ませんが一応お見せしました。スルーして次の画面に進みます。
最終的にこの画面でInstallを押下してインストール開始となります。
インストールが進むとプログレスバーが動いて作業の進捗を見る事ができます。
インストールが終了するとその旨を伝えるダイアログボックスが立ち上がります。
Finishボタンを押下してください。インストールはこれで終了です。
Chromeのダウンロードとインストールとバージョン確認
Chromeのダウンロード、インストール、バージョン確認について説明します。
Chromeのダウンロード
Chromeのダウンロード、インストールは難しくないので省略します。
Chromeのダウンロード先のリンクだけ用意しておきます。必要に応じてダウンロードとインストールをお願い致します。
Chromeのバージョン確認
バージョンを確認する方法を紹介します。Chromeを起動してアドレスバーに以下の様に入力してください。
一番上の値を確認。私は 105.0.・・・という数値です。
先頭の3文字だけでおおよそ大丈夫ですが画像の赤枠にある程度の桁まで数値を控えておきましょう。
Chromeドライバーをダウンロード
以下URLにアクセスしましょう。
お知らせ
2024年05月29日に確認したところ操作画面に変更がありました。情報を更新します。
上に用意したURLに進むと以下画面が表示されます。赤枠で囲んだ部分がリンクになっています。
こちらをクリックしましょう。
最新のChromeドライバーのラインナップを見ることができます。
私は125.0.6422.112でしたのでStableをクリックしました。
するとStableで選択できる要素が並んだ画面に遷移します。
少し色が濃くなっているwin64仕様のドライバーをダウンロードしたところ操作が繋がりました。
皆様は各自ご使用のPCの仕様に合わせて選択する様にしてください。
参考:Chromeドライバーのサイトは操作画面が変化しています
時系列で履歴を残すようにしました。日付が一番近い折りたたみ(アコーディオン)を展開してください。
依然としてHOME画面で最新版へのリンクは表示されません。
HOME画面で画像の赤枠の場所をクリックすると最新版を取りに行く事ができます。
ご自身のバージョンを確認いただき赤枠内のリンクをクリック。
私はVersionが116.0.5845・・・のWindows64ビット版をダウンロードしました。
画像内で赤枠を使って指示しているURLをコピーしてブラウザのURLバーにペーストします。
Enter押下でダウンロードデータが用意されます。
(直ぐにダウンロード先を指示するダイアログ画面が出てきます)
デスクトップなどに落としてChromeドライバーを手に入れてください。
ご注意ください
一番左の列のBinaryでは「chromedriver」を選ぶ様にしましょう。(chromeではないです)
2023/07/19 情報を追加します。
自PCにインストールしているドライバーが古くなりエラーが発生しました。
メッセージには115.・・・というバージョンが書かれているのでその情報を頼りにドライバーを探します。
ドライバーを探しにいったのですが115.・・・のバージョンはドライバーが用意されていませんでした。
仕方ないので一番最新であろうと思われる114.0.5735.90のドライバーをインストールしました。
結果としては問題なく実行できました。
ドライバーがChromeの最新バージョンに追いつかない事もあるみたいです。
その時は最新のドライバーをインストールしてみてください。
ずっと下に見ていく中で自分PCのChromeのバージョンと同じものをダウンロードします。
先頭の3文字が一致していれば大丈夫です。
今回私はCurrent Releasesの105.0.・・・をダウンロードしました。
次の画面ではOS毎にドライバーを選択します。
自分のPCはWindowsですので下から2番目のzipファイルをダウンロードします。Windowsは一択です。
Chromeドライバーを上書保存
先程Seleniumbasicをインストールしました。その中にChromeのドライバーが居るのですが最新ではないです。
まずは最新のドライバーをインストールしましょう。
その後Seleniumbasicがデフォルトで持っているドライバーと入れ替えてください。
理由はSeleniumbasicに備えてあるドライバーがかなり古いものだからです。
2024年02月に以下画像を追加Seleniumをインストールした際の周辺データの画像です。
Chromeについては2024年02月にドライバーを入れ替えましたので最新ですがEdgeのドライバーは2015年のままです。
この様にSeleniumbasicをインストールした際はどのブラウザのドライバーも古いドライバーが備付けられています。
インストール後は各自が使用するブラウザに対して最新のドライバーを用意する必要があります。
具体的に何をやるかと言いますと単純に置き換えて(上書き)ください。
先程ダウンロードしたドライバーを上記フォルダにドラッグアンドドロップしましょう。
「上書きしますか?」というような問い合わせが出るので上書きしてください。これでドライバー関連の作業は終了です。
関連記事:Edgeで環境構築
EdgeでWebスクレイピングを検討されている方はEdge用のドライバーをインストールしましょう。
Chromeと違ってドライバーにひと手間加える必要があります。詳細はこちらをご覧ください。
VBEの参照設定で必要なライブラリを選択
やっとExcelの話になりましたね。お馴染みのVBEを開きます。
参照設定から Selenium Type Library を見つけてレ点を入れてからOKボタンを押下しましょう。
参照設定はライブラリの解説時に説明済です。文字に用意されたリンクで説明している場所にジャンプします。
あくまで希望ですがスクレイピングをやる人はスキルとして参照設定の意味は分かっていてほしいです。
これでやっと環境構築が完了しました。
ブラウザは定期的にバージョンアップします
各ブラウザは不定期でバージョンアップします。
その時にSeleniumbasicに備えたドライバーもインストールする必要があります。
ドライバーが最新じゃない時はVBAでコードを実行した際にエラーで止まります。「ドライバーが古いな」と気付きます。
このサイトのリンクを持っておきましょう
メンテナンス時は再度先程の設定と同じようにドライバーをダウンロードしましょう。
Seleniumbasicが持っているドライバーを上書きしてください。
この様に定期的にメンテナンスが必要です。環境を最新に保つ必要があります。
加えて見ていただいた様に非常に手間がかかります。
記事を用意した私自身も実際にこのURLに来て都度ドライバーをインストールしています。
ドライバーのバージョンアップに合わせて作業をするので不定期になります。
そんな時にツールの置き場所(この記事)が決まっているのでメンテナンス時間を大幅に短縮できます。
簡単なコードの書き方を紹介
コードの書き方については別記事で紹介しています。
出来るだけ身近なケースを用意して簡単なコードでスクレイピングしていますのでご覧ください。
コードが書けるようになるVBA×Selenium×Cromeで簡単Webスク|Nameタグを使う
右クリックやダブルクリック、マウスホバーについて解説しています。
マウスの操作を再現【selenium×VBA】右クリックを含めたマウス操作を再現
私はXPathの方がスクレイピングしやすいです。理由は記事を見ていただく事で分かります。
更に簡単にコードを書く事ができるVBA×Chrome/Edgeでスクレイピング|XPathとは?|動画で解説
XPathを指定したうえでそのパスにある他の属性を取得する事もできます。
お役立てください【selenium×VBA】XPath指定でClass属性を取得
まとめ
私の印象では最初は環境構築7コード3という比率で環境構築の方が圧倒的に面倒で手間です。
- Seleniumのダウンロードとインストール
- ブラウザ毎にドライバーを用意してSeleniumの環境にセットする
- ブラウザのバージョンアップの度にドライバーを再インストールする必要がある
慣れると環境構築2コード8ぐらの比率に変わってきます。
スクレイピングに慣れてくると色々なWeb画面と対峙する事になります。
複数のURLに対応する為にコードのアレンジが必要になります。
よってコードの事を考える比率が多くなり上記の様な比率に至ります。
簡単かつ最短距離でWebスクレイピングを解説してきました。難しかった人も居るはずです。
分かりにくい時は分かっている人に聞きましょう。以下リンクをご覧ください。
関連記事VBAの習得時間を最短にする方法分かる人に聞く事をおすすめします
分からない中食らいついて勉強するとレベルUpしますがどうしてもダメだと思ったら分かる人を探しましょう。探し方を紹介しています。