🍣
Excel VBAを用いたWebスクレイピング
概要
本記事では、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