【问题标题】: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
要执行上述脚本,不需要添加对库的任何引用。