使用 vba 从 Yahoo finance 抓取数据
Scraping data with vba from Yahoo finance
我需要从雅虎财经页面读取股票的收盘价。我在使用 Google 财经页面之前得到了这个答案,但该页面不再可用,我相信 Google 已经完全改变了它的财经页面。我相信我可以在稍加修改的情况下将其应用于雅虎财经。
假设 Yahoo Finance 具有以下股票代码 AAPL(Apple)代码:
![YAHOO WEBPAGE CODE FOR AAPL][1]
我只需要提取值 172.77。
这与 Google 财务页面完美配合。在我下面的代码中。
行:
"https://finance.google.com/finance?q="
替换为:
"https://finance.yahoo.com/quote/"
代码在一系列单元格中循环并读取股票代码。我们需要从 Yahoo 页面获得相同的结果。
Sub ImportCurrentPriceNEW()
Dim appIE As New InternetExplorer, html As HTMLDocument
Dim item_data As Object
For k = 6 To 26 Step 1
s = 1
H = 1
L = 1
StopLoop = 0
q = Format(k, "0")
If IsEmpty(ActiveSheet.Range("$E$" & q).Value) = True Then
With appIE
.Visible = False
.navigate "https://finance.google.com/finance?q=" & Sheets("Up Trend
Stocks").Range("$A$" & q).Value
Do Until .readyState = 4: DoEvents: Loop
Set html = .document
End With
Set item_data = html.querySelector(".pr span")
Range("$B$" & q).Value = item_data.innerText
End If
Next
appIE.Quit
Range("D1").Select
End Sub
请告诉我如何修改上面的代码以从 Yahoo Finance 页面读取数据。
试试下面的方法。它应该从 https://finance.yahoo.com/quote/
中获取 AAPL
的值。使用class
name 或tag
name 来达到这个值实际上很麻烦。不过,我这里用的是static id
.
Sub Fetch_Quote()
Dim HTML As HTMLDocument, elem As Object, URL$
URL = "https://finance.yahoo.com/quote/AAPL?p=AAPL"
With CreateObject("InternetExplorer.Application")
.Visible = True
.navigate URL
While .Busy = True Or .readyState < 4: DoEvents: Wend
Set HTML = .document
Set elem = HTML.getElementById("quote-market-notice").PreviousSibling.PreviousSibling
MsgBox elem.innerText
End With
End Sub
那就试试这个。现在,你应该眨眼就得到了结果:
Sub Fetch_Quote()
Dim HTML As New HTMLDocument, elem As Object, URL$
URL = "https://finance.yahoo.com/quote/AAPL?p=AAPL"
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", URL, False
.send
HTML.body.innerHTML = .responseText
Set elem = HTML.getElementById("quote-market-notice").PreviousSibling.PreviousSibling
MsgBox elem.innerText
End With
End Sub
要添加到库中的引用:
Microsoft XML, V6.0
也许你对google有反感,但我认为你应该考虑使用这个小工具。
http://investexcel.net/multiple-stock-quote-downloader-for-excel/
这应该可以满足您的所有需求,甚至更多!!
否则,在 Excel 中的“数据”选项卡下,单击“现有连接”,然后单击“MSN Money Central Investor Stock Quotes”。请参见下图。输入您的 tickers/symbols,然后单击“打开”。
如果尚未安装该应用程序,请单击下面的 link,然后按照步骤进行所有设置并在您的计算机上运行。
https://appsource.microsoft.com/en-us/product/office/WA104379220?tab=Overview
我需要从雅虎财经页面读取股票的收盘价。我在使用 Google 财经页面之前得到了这个答案,但该页面不再可用,我相信 Google 已经完全改变了它的财经页面。我相信我可以在稍加修改的情况下将其应用于雅虎财经。
假设 Yahoo Finance 具有以下股票代码 AAPL(Apple)代码:
![YAHOO WEBPAGE CODE FOR AAPL][1]
我只需要提取值 172.77。
这与 Google 财务页面完美配合。在我下面的代码中。
行:
"https://finance.google.com/finance?q="
替换为:
"https://finance.yahoo.com/quote/"
代码在一系列单元格中循环并读取股票代码。我们需要从 Yahoo 页面获得相同的结果。
Sub ImportCurrentPriceNEW()
Dim appIE As New InternetExplorer, html As HTMLDocument
Dim item_data As Object
For k = 6 To 26 Step 1
s = 1
H = 1
L = 1
StopLoop = 0
q = Format(k, "0")
If IsEmpty(ActiveSheet.Range("$E$" & q).Value) = True Then
With appIE
.Visible = False
.navigate "https://finance.google.com/finance?q=" & Sheets("Up Trend
Stocks").Range("$A$" & q).Value
Do Until .readyState = 4: DoEvents: Loop
Set html = .document
End With
Set item_data = html.querySelector(".pr span")
Range("$B$" & q).Value = item_data.innerText
End If
Next
appIE.Quit
Range("D1").Select
End Sub
请告诉我如何修改上面的代码以从 Yahoo Finance 页面读取数据。
试试下面的方法。它应该从 https://finance.yahoo.com/quote/
中获取 AAPL
的值。使用class
name 或tag
name 来达到这个值实际上很麻烦。不过,我这里用的是static id
.
Sub Fetch_Quote()
Dim HTML As HTMLDocument, elem As Object, URL$
URL = "https://finance.yahoo.com/quote/AAPL?p=AAPL"
With CreateObject("InternetExplorer.Application")
.Visible = True
.navigate URL
While .Busy = True Or .readyState < 4: DoEvents: Wend
Set HTML = .document
Set elem = HTML.getElementById("quote-market-notice").PreviousSibling.PreviousSibling
MsgBox elem.innerText
End With
End Sub
那就试试这个。现在,你应该眨眼就得到了结果:
Sub Fetch_Quote()
Dim HTML As New HTMLDocument, elem As Object, URL$
URL = "https://finance.yahoo.com/quote/AAPL?p=AAPL"
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", URL, False
.send
HTML.body.innerHTML = .responseText
Set elem = HTML.getElementById("quote-market-notice").PreviousSibling.PreviousSibling
MsgBox elem.innerText
End With
End Sub
要添加到库中的引用:
Microsoft XML, V6.0
也许你对google有反感,但我认为你应该考虑使用这个小工具。
http://investexcel.net/multiple-stock-quote-downloader-for-excel/
这应该可以满足您的所有需求,甚至更多!!
否则,在 Excel 中的“数据”选项卡下,单击“现有连接”,然后单击“MSN Money Central Investor Stock Quotes”。请参见下图。输入您的 tickers/symbols,然后单击“打开”。
如果尚未安装该应用程序,请单击下面的 link,然后按照步骤进行所有设置并在您的计算机上运行。
https://appsource.microsoft.com/en-us/product/office/WA104379220?tab=Overview