无法从雅虎财经获取特定数据点到Excel?

时间:2015-10-07 02:11:18

标签: html excel vba getelementbyid innertext

我试图从雅虎财经页面中提取一个非常具体的数字,但我遇到了问题。我试图从中获取此信息的链接是:

  

http://finance.yahoo.com/q/hp?s=AAPL+Historical+Prices

我有兴趣以粗体显示该页面顶部附近列出的 111.31 数字。我已经编写了以下代码来提取这些信息,但每次运行它时都会说“对象不支持此属性或方法”#34;。我怀疑错误在于我使用getElementsByClassgetElementsById来提取数据的行。

    Sub GetQuote()
    Dim IE As Object

     Set IE = CreateObject("InternetExplorer.Application")

     With IE
        .Visible = True
        .navigate "http://finance.yahoo.com/q/hp?s=AAPL+Historical+Prices"
        Do While .busy: DoEvents: Loop
        Do While .ReadyState <> 4: DoEvents: Loop
        With .document
            Application.Wait (Now + #12:00:05 AM#)
            Sheets("Sheet1").Range("A3") = .getElementsByClass("time_rtq_ticker").getElementsById("yfs_184_aapl").innerText

        End With

    End With

    Set IE = Nothing
    End Sub

请大家看一下,让我知道我哪里出错了,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

getElementsByClassName method会返回一个或多个对象的集合。您需要提供集合中元素的索引(即 position )。尝试,

Sheets("Sheet1").Range("A3") = .getElementsByClass("time_rtq_ticker")(0).getElementById("yfs_184_aapl").innerText

事实上,yfs_184_aapl ID在该页面上是唯一的。你只需要,

Sheets("Sheet1").Range("A3") = .getElementById("yfs_184_aapl").innerText

请注意,getElementById method是单数,而不是getElementsById