【问题标题】:getting a number from a website从网站获取号码
【发布时间】:2018-01-26 17:49:56
【问题描述】:

我正在尝试从网站获取欧元金额字符串的数字部分。我尝试了不同的东西,通常可以。这是我最好的 3 次尝试。没有任何效果

我的第一次尝试:

Sub gsellor() 
    Dim objIE As InternetExplorer 
    Dim aEle As HTMLLinkElement 
    Dim HTMLtags As IHTMLElementCollection
    Dim HTMLtag As IHTMLElement
    Dim HTMLPreisTag As IHTMLElement

    Set objIE = New InternetExplorer
    objIE.Visible = True

    objIE.navigate "https://www.gdax.com/trade/LTC-EUR"
    Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop


    Set HTMLPreisTag = objIE.document.getElementById("page_content").Children(0).Children(1).Children(0).Children(1).Children(0)
    Debug.Print HTMLPreisTag.className
    Debug.Print HTMLPreisTag.Children(1).Children(0).Children(0).innerText     ' gets stuck right here



    objIE.Quit

End Sub

立即窗口显示:

MarketInfo_market-info_3lkUj

我的第二次尝试:

Sub gsellor()  
    Dim objIE As InternetExplorer 
    Dim aEle As HTMLLinkElement 
    Dim HTMLtags As IHTMLElementCollection
    Dim HTMLtag As IHTMLElement
    Dim HTMLPreisTag As IHTMLElement

    Set objIE = New InternetExplorer
    objIE.Visible = True

    objIE.navigate "https://www.gdax.com/trade/LTC-EUR"
    Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop


    Set HTMLtags = objIE.document.getElementsByTagName("span")
    Debug.Print HTMLtags.Length
    For Each HTMLtag In HTMLtags
        Debug.Print "name: " & HTMLtag.className
        Debug.Print "text: " & HTMLtag.innerText

    Next HTMLtag


    objIE.Quit

End Sub

立即窗口显示:

 3
name: 
text: 
name: AccountPanel_account-panel-user-name_2TNIL
text: 
name: sr-only
text: Toggle navigation

我的第三次尝试:

Sub gsellor()   
    Dim objIE As InternetExplorer 
    Dim aEle As HTMLLinkElement 
    Dim HTMLtags As IHTMLElementCollection
    Dim HTMLtag As IHTMLElement
    Dim HTMLPreisTag As IHTMLElement

    Set objIE = New InternetExplorer
    objIE.Visible = True

    objIE.navigate "https://www.gdax.com/trade/LTC-EUR"
    Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop


    Set HTMLtags = objIE.document.getElementsByClassName("MarketInfo_market-num_1lAXs")
    Debug.Print HTMLtags.Length
    For Each HTMLtag In HTMLtags
        Debug.Print "name: " & HTMLtag.className
        Debug.Print "text: " & HTMLtag.innerText

    Next HTMLtag


    objIE.Quit

End Sub

立即窗口:

0 

【问题讨论】:

  • 你只需要那个数字,而且它总是前面是this tag,对吗?如果是这样,请不要费心将其解析为 HTML 对象,只需将 InnerHTML 放入字符串变量中并使用常见的文本函数(如 InStrMid)来查找您需要的内容。这个网站和其他网站上可能有几十个例子。

标签: vba excel dom web-scraping children


【解决方案1】:

要获取内容,您需要让您的浏览器等到内容不是空的时候。这是实现相同目的的另一种方式:

Sub gsellor()
    Dim ObjIE As New InternetExplorer
    Dim Ohtml As HTMLDocument
    Dim item_price As Object

    With ObjIE
        .Visible = True
        .navigate "https://www.gdax.com/trade/LTC-EUR"
        Do Until .readyState = READYSTATE_COMPLETE: Loop
        Set Ohtml = .document
    End With

    Do
        Set item_price = Ohtml.getElementsByClassName("MarketInfo_market-num_1lAXs")(0)
        DoEvents
    Loop While item_price Is Nothing

    MsgBox item_price.innerText

    ObjIE.Quit
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多