【问题标题】:How can i get a value with span tag in vba web scraping?如何在 vba 网页抓取中获得带有 span 标签的值?
【发布时间】:2021-03-25 15:44:44
【问题描述】:

我是网络抓取的初学者,这是我的第一个项目。我试图捕捉 ADVFN 网站中的价值并将其传递给我的工作表。

这是链接:https://br.advfn.com/bolsa-de-valores/bmf/DI1F22/cotacao

我要复制的值在 3,03

我不确定为什么这不起作用:

Sub web_scraping_teste()

    Dim ieObj As InternetExplorer
    Dim teste As Object

    Set ieObj = New InternetExplorer
    
    ieObj.Visible = False
    
    ieObj.navigate ("https://br.advfn.com/bolsa-de-valores/bmf/DI1F22/cotacao")
    
    Application.Wait (Now + TimeValue("00:00:02"))
    
    Set teste = ieObj.document.getElementById("quoteElementPiece1").getElementsByTagName("span")(0).innerText
    
    Range("A1").Value = teste
    
End Sub

【问题讨论】:

    标签: html vba web web-scraping screen-scraping


    【解决方案1】:

    这应该可以工作,因为您想要的值直接包含在具有提供的 id 的元素中:

    Set teste = ieObj.document.getElementById("quoteElementPiece1")
    
    Range("A1").Value = teste.innerText
    

    注意.innerText 不返回对象,因此您不能使用 Set 将其分配给像 teste 这样的对象类型变量

    【讨论】:

      【解决方案2】:

      您不需要任何浏览器模拟器即可从该站点获取上述值。您可以选择 xhr,如下所示:

      Sub GetValue()
          Dim S$, oVal As Object
      
          With CreateObject("MSXML2.XMLHTTP")
              .Open "GET", "https://br.advfn.com/bolsa-de-valores/bmf/DI1F22/cotacao", True
              .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
              .send
              While .readyState < 4: DoEvents: Wend
              S = .responseText
          End With
          
          With CreateObject("htmlfile")
              .body.innerHTML = S
              Set oVal = .getElementById("quoteElementPiece1")
              
              If Not oVal Is Nothing Then
                  MsgBox oVal.innerText
              End If
          End With
      End Sub
      

      要执行上述脚本,不需要添加对库的任何引用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-05
        • 2020-11-29
        • 2021-10-01
        • 2014-01-10
        • 1970-01-01
        • 2021-06-05
        相关资源
        最近更新 更多