株価取得マクロを作ってみた!!

未分類

株価取得マクロを作ってみた!!

イメージは以下

準備

・SeleniumBasicをインストールする

以下を参考にインストールしました。

SeleniumBasicをインストールしてExcel(VBA)からWebスクレイピングを行うまでのチュートリアル(サンプルプログラム付き)
Selenium Basicの入手 Selenium Basicは、ChromeやEdge、IEなどをVBAなど外部プログラムから制御するためのライブラリです。以下のページにアクセスして Downloadと書かれているすぐ下のリンクをクリッ

※.Net Fremework をインストールするときはほかのサイトを見て参考にしました。

後は適当にVBAを記載する

Sub kabuka()


‘変数:driver でSelenium制御
Dim driver As New Selenium.ChromeDriver

‘ByクラスはSelenium独自搭載のクラス
Dim myBy As New By

‘初期起動時に開くURL
Dim siteURL As String
Dim num1 As Integer

‘ループ用変数
Dim i As Integer

‘Selenium利用時、ウィンドウサイズを最大化で開く初期設定
driver.AddArgument “disable-gpu”
driver.AddArgument “start-maximized”

‘SeleniumでChromeを使用する初期設定
Call driver.Start(“chrome”)

‘Excelに転記する

‘For i = 証券コードが始まるセルの行 To Cells(証券コードが始まるセルの行, “証券コードの列”).End(xlDown).Row
For i = “6” To Cells(“6”, “B”).End(xlDown).Row

‘指定のURLに移動する
siteURL = “https://finance.yahoo.co.jp/quote/”

‘証券コードが数字だったらスクレイピングをする
If IsNumeric(Cells(i, “B”).Value) = True Then
num1 = Cells(i, “B”).Value
Dim inputUrl As String: inputUrl = siteURL & num1 & “.T”
driver.Get (inputUrl)

‘セクター
Range(“C” & i) = driver.FindElementByXPath(“/html/body/div/div[2]/main/div/div/div[1]/div[2]/section[1]/div[2]/div[1]/div[1]/a”).Text

‘銘柄名
Range(“D” & i) = driver.FindElementByXPath(“/html/body/div/div[2]/main/div/div/div[1]/div[2]/section[1]/div[2]/header/div[1]/h1”).Text

‘前日終値
Range(“E” & i) = driver.FindElementByXPath(“/html/body/div/div[2]/main/div/div/div[1]/div[2]/div[1]/section[1]/div/ul/li[1]/dl/dd/span[1]/span/span”).Text

‘配当
Range(“F” & i) = driver.FindElementByXPath(“/html/body/div/div[2]/main/div/div/div[1]/div[2]/div[2]/section[2]/div/ul/li[4]/dl/dd/a/span[1]/span/span”).Text

‘Dim inputUrl2 As String: inputUrl2 = siteURL & num1 & “.T/incentive”
‘driver.Get (inputUrl2)

‘優待
‘Range(“H” & i) = driver.FindElementByXPath(“/html/body/div/div[2]/main/div[1]/div/div[1]/div[2]/section[2]/div/table/tbody/tr[1]/td”).Text
‘Range(“I” & i) = driver.FindElementByXPath(“/html/body/div/div[2]/main/div[1]/div/div[1]/div[2]/section[2]/div/table/tbody/tr[2]/td”).Text
‘Range(“J” & i) = driver.FindElementByXPath(“/html/body/div/div[2]/main/div[1]/div/div[1]/div[2]/section[2]/div/table/tbody/tr[3]/td”).Text
‘Range(“K” & i) = driver.FindElementByXPath(“/html/body/div/div[2]/main/div[1]/div/div[1]/div[2]/section[3]/div/div/table/tbody/tr/td”).Text

Else ‘証券コードが数字以外の場合
‘なにもしない
End If

Next i

End Sub

 

 

 

コメント