2017-07-31 186 views
1

目标是从此网站中提取XBT/USD值:https://www.bitmex.com/我从另一个问题获得了此代码,并试图根据需要对其进行编辑,但它返回QTUMU17值。根据检查VBA:从HTML获取数据

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 

HTML代码元素:

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

预先感谢您的宝贵帮助。

回答

2

你应该把重点放在这里的类名上。每种货币都在ticker-item类别下。 XBT/USD是第一货币,所以你应该去(0):

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

由于要提取只是价格,你需要挖掘到这一点。 price元素又是第一次出现,所以你需要得到price用(0):

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

非常清晰,非常感谢 –

1

我看到一些问题。您的每条语句都搜索与“PlusTick”相等的每个类名,并且符合此条件的最后一条语句恰好是QTUMU17的值。我看到的另一个问题是,如果您通过类名称PlusTick进行搜索,那么只有在它是“PlusTick”的情况下才会提取该值,但从查看该网站时可能会出现您的XBT/USD可能成为减去打勾。我对html不是很有经验,但我希望这可以帮助你进一步理解你当前的输出。