🍣

Excel VBAを用いたWebスクレイピング

2024/01/20に公開

概要

本記事では、Excel VBAとSelenium WebDriverを活用して、Yahoo!ファイナンスのウェブサイトから自動的に株価情報を取得し、Excelシートに記録する方法を紹介します。

ただし、Yahoo!ファイナンスでは掲載情報の自動取得(スクレイピング)は禁止されています。コードはスクレイピングが許可されているサイトでの使用や、他の用途への活用にとどめていただけると幸いです。

必要なツールとセットアップ

  • Selenium WebDriver: ウェブブラウザの操作を自動化するためのツール。Google Chromeと互換性のあるWebDriverが必要です。
  • VBAプロジェクトへのSeleniumの参照追加: VBAエディタ内でSeleniumライブラリを参照に追加します。

コード

Sub FetchStockPriceFromYahoo()
    Dim driver As New WebDriver
    Application.ScreenUpdating = False
    driver.Start "chrome"
    driver.Get "https://finance.yahoo.co.jp/quote/6731.T"

    Dim element As Object
    Set element = driver.FindElementByCss("#root > main > div > div.rMa89KwT > div.XuqDlHPN > div:nth-child(3) > section._1zZriTjI._2l2sDX5w > div._1nb3c4wQ > header > div.nOmR5zWz > span > span > span")
    Dim value As String
    Range("A1").value = element.Text

    ' ブラウザの終了
    driver.Quit
    Application.ScreenUpdating = True
End Sub

所感

CSSセレクタが要更新、Selenium WebDriverとChromeDriverが要更新、ウェブサイトの利用規約に依存するの3点であまり良い方法ではないと思った。株価くらい典型的な指標なら、そもそもAPIを利用した方がいい。

Discussion