SeleniumBasicをインストールしてExcel(VBA)からWebスクレイピングを行うまでのチュートリアル(サンプルプログラム付き)

Selenium Basicの入手

Selenium Basicは、ChromeやEdge、IEなどをVBAなど外部プログラムから制御するためのライブラリです。
以下のページにアクセスして Downloadと書かれているすぐ下のリンクをクリックします。

Seleniumbasic
Seleniumbasic : A Selenium based browser automation framework for VB.Net, VBA and VBScript
image

SeleniumBasic-2.0.9.0.exe をダウンロードして実行。

image

尚最終更新が2016年3月となっていますが、SeleniumBasic自体は基幹となるなる部分であり、末端のブラウザに対する制御部分は絶えず更新がされていますのでご安心ください。
最新のブラウザに対応させる手順は後程説明します。
自動アップデート化も可能です。

インストーラーの実行

インストーラーを立ち上げた直後のウィンドウ。
Nextをクリック

image

ライセンス条項が表示されるので、◎ I accept the argreement を選択してNextをクリック

image

特に変更する必要はないのでそのままNextをクリック

image

インストールされる先のフォルダ名を覚えておいて Installクリック

image

インストールが終わると、Firefoxのアドオンをインストールするか聞いてくるので
チェックを外して Finish をクリック。

ここでインストールさせようとしているアドオンは最新版のFirefoxでは使えません。

image

Selenium Basicを最新版のChromeに対応させる

SelenumBasicに同梱されているChrome用の制御ドライバは残念ながら最新版のChromeに対応していません。
以下のページから最新版のChromeドライバをダウンロードしてきて、手動で上書きコピーする必要があります。

Chrome for Testing availability

使用しているChromeのバージョンに合わせて選択

chrome://settings/help

Ver116.0.xxxx だったので、赤枠で囲ったStableをクリック

色々あって分かりづらいですが、
Windows版が必要なので、chromedriver_win32.zip をダウンロードします。

どういう訳かファイルに対してリンクが貼られていませんので、赤枠で囲ったURLをコピーしてブラウザのアドレスバーに貼り付けるか、図のようにURLに移動してダウンロードします。

zipを展開すると chromedriver.exe があると思います。
このファイルを、Selenium Basicをインストールしたフォルダにコピー&上書きします。

image

どこにインストールされているかわからなくなったら、エクスプローラのアドレスバーに以下のテキストをコピー&ペーストすればフォルダを開くことができます。

%LOCALAPPDATA%\SeleniumBasic

Selenium Basicの動作確認(スクレイピングサンプルVBA)

とあるサービスの検索ページから結果をスクレイピングして取得するサンプルを用意しました。

image

以下のマクロを実行すると、某図書館のHPからChromeでSeleniumの本を検索し、スクレイピングを行い情報をExcelに貼り付けます。(要:Chrome)
この記事を書いた時に作成したサンプルプログラムは一番下からダウンロードできます。

EXCELマクロ(VBA)でスクレイピングする部分の抜粋

    With driver
        
        .Start
        
        '.Window.SetSize 1920, 1080
        
        .Get "https://www.library.toyota.aichi.jp/" '豊田市図書館のHPにアクセス
        
        '検索するキーワードを投入
        .FindElementById("kensaku_keyword").SendKeys Range("SearchKeyWord") & vbCrLf
        
        'スクレイピング開始
        'doclistの中に1冊ごとにdoc,doc,doc… という繰り返しで本の情報が入っている
        
        For Each elmDoc In .FindElementByClass("doclist").FindElementsByClass("doc")
            
            '各CSS名にアクセス
            OutputTarget.Cells(, 1) = elmDoc.FindElementByClass("doc-title").Text       '本のタイトル
            Set OutputTarget = OutputTarget.Offset(1)
            
            OutputTarget.Cells(, 2) = elmDoc.FindElementByClass("doc-writer").Text      '著者
            Set OutputTarget = OutputTarget.Offset(1)
            OutputTarget.Cells(, 2) = elmDoc.FindElementByClass("doc-recap").Text       '本の概略
            Set OutputTarget = OutputTarget.Offset(1)
            OutputTarget.Cells(, 2) = elmDoc.FindElementByClass("doc-available").Text   '貸出可否
            
            Set OutputTarget = OutputTarget.Offset(2)
        Next
                   
    End With
image

サンプルプログラム ダウンロード

“SeleniumBasicSample.xlsm” をダウンロード SeleniumBasicSample.xlsm – 14308 回のダウンロード – 24.57 KB

マクロの実行が許可できない場合の対処法

ダウンロードした SeleniumBasicSample.xlsm を開くとマクロの警告が表示されますが、ここで許可できない場合の対処法です。

ダウンロードしたファイルのプロパティを確認し、セキュリティのところのチェックをして再度Excelで開いてみてください。

いつも通りのマクロを有効にするかどうかの選択画面になりました。
不安な人は編集を有効にしてマクロ実行可能にする前に
ALT+F11押下する事で不審なマクロが組み込まれていないか確認することができます。
「編集を有効にする」をクリックすることでマクロが実行できるようになります。

新規PCにSeleniumBasicをインストールした際の注意点

新規にインストールしたWindows PCに一連のSeleniumBasicの設定を行って、サンプルを実行しようとするとかなりの高確率でオートメーションエラーが発生します。

これは.Net Fremework 3.5がインストールされていないためで、以下のエントリを参照することで解決できる場合があります。

SeleniumBasicでオートメーションエラー -214623576(80131700) が出た時の対処法

SeleniumBasicでオートメーションエラー が出た時の対処法
SeleniumBasicをインストールしてExcelから使うまでのチュートリアルに添付してある動作確認用のExcelマクロを実行すると、 Microsoft Visual Basic 実行時エラー'-2146232576(801

コメント

  1. 沖田 光 より:

    VBAの場合、コードのコピペは、標準モジュールへ貼り付けよ!が定石ですが、今回のこの
    Sheet1にあるコードを、ネット上のサンプルコードを使って、さらに編集する場合、Sheet1にあるコードに直接コピーして貼り付けて編集してもOKでしょうか?

    • IT土方 より:

      Visual Basicを25年ほどやっていて現役のVBAプログラマなのですが、そのような定石は聞いたことがありませんし、どこかのサイトや本を見てそのような情報をすべてのVBAコードの定石として覚えられたのであればそれは不運としか言いようがありません。

      間違った定石に基づいた質問であると思われるためそのような定石は捨てて、ご自由にコードを編集なさってください。

      • 沖田 光 より:

        IT土方さん ありがとうございます。
        ネット情報をプログラミング初心者の私が、曲解していました。

        http://officetanaka.net/excel/vba/beginner/10.htm
        に書いてあることを読んで、サンプルをコピペして利用するときは、標準モジュールに貼り付けるのが、定石と勝手に勘違いしてました。

        愚問してしまい申し訳ございませんでした。

  2. おじじ より:

    セレニアムベーシックは、古いクロームのバージョンで止まっていたので、使わなくなっていました。今般、このサイトを発見したので、早速ドライバーを差し替えて起動を確認しました。ありがとうございます。現在、ウインドウズでは、ie11が実用上作動しなくなりましたので、助かります。

  3. たぬさん より:

    す。。すみません・・・
    サンプルプログラムってどこからダウンロードしたらよろしいでしょうか・・・

    • IT土方 より:

      どうやらダウンロードリンクが機能しなくなっていたようです。
      修正しましたので今はダウンロードできるかと思います。

  4. […] SeleniumBasicをインストールしてExcel(VBA)からWebスクレイピングを行うまでのチュートリアル(サンプルプログラム付き)Selenium Basicの入手Selenium Basicは、ChromeやEdge、IEなどをVBAなど外部プロ […]

タイトルとURLをコピーしました