【VBA】Seleniumを使って簡単にWebスクレイピングする(データ取得編)

スポンサーリンク


Seleniumを使わなくてもIEを起動して、Webページをスクレイピングすることもできますが、IEを起動することに抵抗があったり、Webスクレイピングする操作が手間だったりします。
Seleniumを使うとVBAからChromeを起動して、Webページを簡単にスクレイピングすることができます。

Seleniumのインストール方法についてはこちらをご覧ください。

【VBA】Seleniumを使って簡単にWebスクレイピングする(準備編)
Excel VBAでWebスクレイピングをする場合にIEを使う方法があるのですが、なんとなくIEを使うことに抵抗があったりしませんか? Seleniumを使うことでChromeを起動させることができるようになります。 そして実際にW...

今回は実際に「Yahoo!ファイナンス」のページをChromeで開いて、中国元の為替レートを取得してみます。

外国為替計算 - Yahoo!ファイナンス
韓国ウォン、中国元、バーツ、ペソ、リンギット、ルピー、レアルなどショッピングや旅行、ビジネス、外貨預金に便利なレート換算をご利用いただけます。また、ドル円やユーロ、ポンド、豪ドル、カナダドル、スイスフランなどの為替レートやFXチャートで為替相場をご覧いただけます。

こちら↓↓↓

スポンサーリンク

VBAを起動して参照設定

こちらはSeleniumのインストール方法でも説明しましたが、もう一度記載しておきます。

VBAを起動して、「ツール」→「参照設定」を開きます。

「Selenium Type Library」にチェックを入れて、「OK」をクリックします。

為替レートページを開く

Chromeで開くページのURLは「https://info.finance.yahoo.co.jp/fx/convert/?a=1&s=CNY&t=JPY」です。

Sub OpenChrome()
    Dim Driver As New Selenium.WebDriver

    Driver.Start "Chrome"
    Driver.Get "https://info.finance.yahoo.co.jp/fx/convert/?a=1&s=CNY&t=JPY"
    ' *****
    ' ここで為替レートを取得
    ' *****
    Driver.Close
    Set Driver = Nothing
End Sub

データ取得

データの取得はFindElementByCssメソッドを使用します。
SeleniumにはこのほかにもFindElementByTagメソッドなどデータを取得するためのメソッドがあります。

’ データの取得
Driver.FindElementByCss("CSSセレクター").Text

CSSセレクターに何をセットしたら良いのか??
Chromeのデベロッパーツールでセットする値を取得することができます。

【1】Chrome右上の「三点メニュー」→「その他ツール」→「デベロッパーツール」を起動します。

【2】要素選択モードにします。

【3】取得したい項目をクリックします。

【4】選択した項目のソース上で右クリックし、「Copy」→「Copy selector」をクリックします。

【5】クリップボードにコピーされているので、VBAの「Driver.FindElementByCss(“CSSセレクター”).Text」のCSSセレクターの部分に張り付けてください。

’ データの取得
Driver.FindElementByCss("#main > div.fxRateCal > table > tbody > tr:nth-child(2) > td.price.noLine").Text

動作確認

動作確認のため、取得した為替レートをMsgboxでポップアップさせます。

Sub OpenChrome()
    Dim Driver As New Selenium.WebDriver
 
    Driver.Start "Chrome"
    Driver.Get "https://info.finance.yahoo.co.jp/fx/convert/?a=1&s=CNY&t=JPY"
    MsgBox Driver.FindElementByCss("#main > div.fxRateCal > table > tbody > tr:nth-child(2) > td.price.noLine").Text
    Driver.Close
    Set Driver = Nothing
End Sub

実行した結果です。
為替レートがメッセージボックスで表示されました。