VBAでwebスクレイピング~2通りの方法をお試し~

2019 9/22
VBAでwebスクレイピング~2通りの方法をお試し~

PythonでWebスクレイピングをする方法を以前勉強し、ブログの検索順位取得ツールを作ってみたのですが、exe化したらファイルサイズが大きすぎてびっくりしました。

では、VBAで同じようにブログの検索順位取得ツールを作ってみたらどうかな、と考えまして、試しにVBAでWebスクレイピングする方法を勉強してやってみました。

VBAでWebスクレイピングする方法を調べると、SeleniumBasicというツールを使うやり方が一般的な様子。

でもSeleniumBasic無しでもWebスクレイピングはできる模様です。

今回はSeleniumBasicを使った方法と、使わない方法の2通りを試してみました。

自分だけでツールを使うならSeleniumBasicを使った方が楽ですが、誰かにあげるツールの場合は相手の環境が分からないのでSeleniumBasicを使わない方法がいいかなと思います。

目次

SeleniumBasicを使用する方法

SeleniumBasicを使ってWebスクレイピングをする方法です。

今回はブラウザにChromeを使用して操作してみます。

参考サイト:VBA+SeleniumBasicで検索順位チェッカー作成

  • STEP1
    インストール
    SeleniumBasicとChromeDriverをインストールする
  • STEP2
    VBA設定
    VBAの参照設定でSeleniumを追加する
  • STEP3
    コーディング
    処理を記述

STEP1:SeleniumBasicとChromeDriverをインストール

SeleniumBasicをインストールします。
基本デフォルトのまま進めてOK。

ChromeDriverをダウンロードします。
使用しているChromeのバージョンに合ったバージョンをダウンロードしましょう。

次に、ダウンロードしたChromeDriver.exeをSeleniumBasicのフォルダーに上書きする必要があります。

STEP2:VBAの参照設定

インストールしたSeleniumBasicをVBAで使用できるように参照設定を行います。

VBAの開発画面で「ツール」→「参照設定」を開き、「Selenium Type Library」を見つけてチェックを入れ、「OK」をクリックします。

VBAの参照設定でSeleniumを追加
VBAの参照設定でSeleniumを追加

STEP3:コーディング

今回はChromeでYahoo!のTOPページにアクセスし、ニュースをクリックし、出てきたニュースの上3つのトピックスを取得するコードを作ってみました。

操作に指定するCSSの取得方法は参考サイトの通りに取得しました。
ChromeのデベロッパーツールでCSSを取得できます。

オートメーションエラーの対処

サンプルコードを実行すると、Driver.Startの行でエラーになりました。
オートメーションエラーという、原因が分かりにくいエラーです。

SeleniumBasicを使ってWEBページにアクセスしようとすると、オートメーションエラーが発生
SeleniumBasicを使ってWEBページにアクセスしようとすると、オートメーションエラーが発生

調べてみると、.NET Frameworkが無いからでは、とのことです。

参考サイト:SeleniumBasicでオートメーションエラーが発生する場合の対処方法

この参考サイトの通りに.NET Framework3.5をインストールしてみました。

.NET Framework 3.5をインストール
.NET Framework 3.5をインストール

しかし、.NETをインストールしたのにオートメーションエラーが消えない!

調べても原因が分からない!!



解決方法は簡単でした。

パソコンを再起動したらエラーが出なくなりました

そんなこと調べてもでてこなかったけど、当たり前なのかな?
同じようにエラーが消えなくてお悩みの方、一度PCを再起動してみてください。

サンプルコードの実行結果は最後に紹介します。

スポンサーリンク

Seleniumを使用しない方法

SeleniumBasicを使用しないで、かつブラウザを介さずにHTMLを取得する方法もあるようなので試してみました。

参考サイト:エクセルVBAでHTTPリクエストをする最も簡単なプログラム
      エクセルVBAでIEを使わずにHTMLドキュメントを取得する方法

このサンプルコードは、グーグルニュースにアクセスしてHTMLを取得し、h3タグ(ニュース記事のトピックス)を取得するコードです。

このコードはエラーもなくさらっと実行できました。

Webスクレイピングを実行した結果

サンプルコードでWebスクレイピングしてみた結果を載せます。

まず、SeleniumBasicを使用するコードで参照したYahooニュースの画面はこちらです。

Yahooニュースの上位3つの取得結果はExcelシートのA列に出力させました。

ヤフーニュースのトピックス
ヤフーニュースのトピックス

お次はSeleniumBasicを使用しないソースコードで使用したグーグルニュースの画面はこちら。

h3タグ(ニューストピックス)を取得した結果をExcelのB列に表示させました。

Googleニュースのトピックス
Googleニュースのトピックス

サンプルコードを実行した結果のExcelシートはこちらです。

A列にYahooニュースの3つのトピックス、B列にグーグルニュースのトピックスが出力されています。

Webスクレイピングで取り出したニューストピックス
Webスクレイピングで取り出したニューストピックス

VBAでWebスクレイピングする方法、なんとかできるようになりました。


クラウドワークスとかで案件を見てみると、VBAでWebスクレイピングしてほしいといった要望が多数ありますよね。

Webスクレイピングって今まで言葉すら聞いたことなかったけど、使用したい企業は多いんですね。

今回の勉強によって、そのような案件に提案していけそうですね。
ちょっとやってみようかな。
レッツ副業!

今回は試作でしたが、何か自分で使えるツールをVBAで作ってみようかなと思っています。

その様子も記事で紹介していきますね。

んじゃ、また~

関連記事

応援よろしくお願いします☆

コメント

コメントする

目次