VBA:从HTML获取数据

时间:2017-07-31 20:19:10

标签: html excel vba

目标是从这个网站中提取XBT / USD值:https://www.bitmex.com/我从另一个问题中获取此代码,并尝试根据需要编辑它,但它返回QTUMU17值。

Option Explicit

Sub BitMEX_BTC_USD()

     'Open website
        Dim IE As New SHDocVw.InternetExplorer
        IE.Visible = True
        IE.Navigate "https://www.bitmex.com/"
        Do While IE.ReadyState <> READYSTATE_COMPLETE
        Loop

    'Extract USD value
        Dim kfc As String
        Dim oHTML_Element As IHTMLElement

            For Each oHTML_Element In IE.Document.getElementsByTagName("span")
                If oHTML_Element.className = "PlusTick" Then
                    kfc = oHTML_Element.innerText
                End If
            Next

    'Value
        Debug.Print kfc

    End Sub

根据inspect元素的HTML代码:

<i class="price">2765.3</i>

提前感谢您的宝贵帮助。

2 个答案:

答案 0 :(得分:2)

你应该专注于课堂名称。每种货币都在ticker-item级以下。 XBT/USD是第一种货币,因此您应该选择(0):

IE.document.getElementsByClassName("ticker-item")(0).innerText

由于您只想提取价格,因此需要深入研究。 price元素是第一次出现,因此您需要使用(0)获取price

IE.document.getElementsByClassName("ticker-item")(0).getElementsByClassName("price")(0).innerText

答案 1 :(得分:1)

我看到了几个问题。您的每个语句都在搜索每个相等的类名&#34; PlusTick&#34;并且在网站上符合此标准的最后一个声明恰好是QTUMU17值。我看到的另一个问题是,如果你按类名PlusTick进行搜索,那么只有当它是&#34; PlusTick&#34;但是从网站上看,它会出现你的XBT / USD可能是一个减号的情况。我在html方面不是很有经验,但我希望这有助于你进一步了解你当前的输出。