Vba 无法按类名获取元素

Vba 无法按类名获取元素,vba,excel,getelementsbyclassname,Vba,Excel,Getelementsbyclassname,我正试图在本页的技术摘要小部件中获得买入、卖出、中性的投票数: 这些元素是 <span class="tv-widget-technicals__counter-number redColor">2</span> <span class="tv-widget-technicals__counter-number neutralColor">10</span> <span class="tv-widget-technicals__coun

我正试图在本页的技术摘要小部件中获得买入、卖出、中性的投票数:

这些元素是

<span class="tv-widget-technicals__counter-number redColor">2</span>

<span class="tv-widget-technicals__counter-number neutralColor">10</span>

 <span class="tv-widget-technicals__counter-number brandColor">8</span>

试试下面的方法。您所关注的内容将动态生成。即使您使用任何浏览器模拟器,如
IE
,也无法获取内容,除非您让浏览器等待一段时间以加载数字。底线是不能使用xmlhttp、winhttp或serverxmlhttp请求获取所需的输出,因为它们不处理动态内容。试一试:

Sub TestMacro()
    Const URL As String = "https://in.tradingview.com/symbols/NSE-TCS/"
    Dim IE As New InternetExplorer, oHtml As HTMLDocument, post As Object, R&

    With IE
        .Visible = True
        .navigate URL
        While .Busy Or .readyState < 4: DoEvents: Wend
        Set oHtml = .document
    End With

    Application.Wait Now + TimeValue("00:00:05")

    For Each post In oHtml.getElementsByClassName("tv-widget-technicals__counter-wrapper")
        With post.getElementsByTagName("span")
            R = R + 1: Cells(R, 1) = .Item(0).innerText
        End With
    Next post
End Sub
参考添加:

Microsoft Internet Controls
Microsoft HTML Object Library

试试下面的方法。您所关注的内容将动态生成。即使您使用任何浏览器模拟器,如
IE
,也无法获取内容,除非您让浏览器等待一段时间以加载数字。底线是不能使用xmlhttp、winhttp或serverxmlhttp请求获取所需的输出,因为它们不处理动态内容。试一试:

Sub TestMacro()
    Const URL As String = "https://in.tradingview.com/symbols/NSE-TCS/"
    Dim IE As New InternetExplorer, oHtml As HTMLDocument, post As Object, R&

    With IE
        .Visible = True
        .navigate URL
        While .Busy Or .readyState < 4: DoEvents: Wend
        Set oHtml = .document
    End With

    Application.Wait Now + TimeValue("00:00:05")

    For Each post In oHtml.getElementsByClassName("tv-widget-technicals__counter-wrapper")
        With post.getElementsByTagName("span")
            R = R + 1: Cells(R, 1) = .Item(0).innerText
        End With
    Next post
End Sub
参考添加:

Microsoft Internet Controls
Microsoft HTML Object Library

由于速度很慢,没有IE也能做到这一点吗。谢谢你的回答。那就试试硒吧。我已经在我的答案中详细说明了为什么IE在这种情况下是理想的。没有IE的情况下是否可能做到这一点,因为它很慢。谢谢你的回答。那就试试硒吧。我已经在回答中详细说明了为什么IE在这种情况下是理想的。