使用雅虎财经的 vba 抓取数据

问题描述 投票:0回答:2

我需要从雅虎财经页面读取股票的收盘价。我在使用谷歌财经页面之前就已经回答了这个问题,但该页面不再可用,我相信谷歌已经完全改变了它的财经页面。我相信我可以在雅虎财经上应用同样的方法,只需稍作修改。

假设雅虎财经的股票代码 AAPL(苹果)有以下代码:

我只需要提取值172.77。

这与 Google 财经页面完美配合。在我下面的代码中。

线路:

    "https://finance.google.com/finance?q="

替换为:

    "https://finance.yahoo.com/quote/"

代码在一系列单元格中循环并读取股票代码。我们需要从雅虎页面获得相同的结果。

    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

请告诉我如何修改上面的代码以从雅虎财经页面读取数据。

excel web-scraping yahoo-finance vba
2个回答
3
投票

尝试以下方法。它应该从

AAPL
获取
https://finance.yahoo.com/quote/
的值。使用
class
名称或
tag
名称来达到该值实际上很麻烦。不过,我在这里使用了静态
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

-1
投票

也许你讨厌谷歌,但我认为你应该考虑使用这个小实用程序。

http://investexcel.net/multiple-stock-quote-downloader-for-excel/

这应该可以完成你想要的一切,甚至更多!!

否则,在 Excel 中的“数据”选项卡下,单击“现有连接”,然后单击“MSN Money Central Investor Stock Quotes”。请参见下图。输入您的股票代码/代码,然后单击“打开”。

如果尚未安装该应用程序,请单击下面的链接,然后按照步骤进行所有设置并在您的计算机上运行。

https://appsource.microsoft.com/en-us/product/office/WA104379220?tab=概述

© www.soinside.com 2019 - 2024. All rights reserved.