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ドライバをダウンロードしてきて、手動で上書きコピーする必要があります。

ChromeDriver - WebDriver for Chrome
WebDriver for Chrome

赤丸で囲ったリンクをクリックしていけばダウンロードできます。

image
image

Windows版が必要なので、chromedriver_win32.zip をダウンロードします。

image

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

image

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

%LOCALAPPDATA%\SeleniumBasic

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

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

image

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

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

    With driver
        .Start
        '豊田市図書館のHPにアクセス
        .Get "https://www.library.toyota.aichi.jp/" 

        '検索するキーワードを投入
        .FindElementById("kensaku_keyword").SendKeys Range("SearchKeyWord") & vbCrLf

        'スクレイピング開始
        For Each elmDoc In .FindElementByClass("doclist").FindElementsByClass("doc")
            Debug.Print elmDoc.FindElementByClass("doc-title").Text       '本のタイトル
            Debug.Print elmDoc.FindElementByClass("doc-writer").Text      '著者
            Debug.Print elmDoc.FindElementByClass("doc-recap").Text       '本の概略
            Debug.Print elmDoc.FindElementByClass("doc-available").Text   '貸出可否
        Next
    End With
image

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

SeleniumBasicSample.xlsm

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

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

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

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

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

コメント

  1. 沖田 光 より:

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

    • IT土方 より:

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

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

      • 沖田 光 より:

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

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

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

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