从网站上抓取数字的问题

Jer*_*emy 2 excel vba screen-scraping excel-vba web-scraping

我已经习惯了刮刮这是一个令人烦恼的问题 - 我正在尝试使用GET方法刮掉VBA,但要获得由Revolut提供的EUR到BHD的汇率并使用以下代码:

Sub My_Scraper()
Dim oXHTTP As Object
Dim doc As New HTMLDocument
Dim html As String
Dim url As String

url = "https://www.revolut.com/converter/EURBHD"

Set oXHTTP = CreateObject("MSXML2.XMLHTTP")
oXHTTP.Open "GET", url, False
oXHTTP.send
html = oXHTTP.responseText
Set oXHTTP = Nothing
doc.body.innerHTML = html
Debug.Print doc.getElementsByClassName("rvl-Rate-rateLabel")(0).innerHTML                 ' Returns "Current rate" as expected
Debug.Print doc.getElementsByClassName("rvl-Rate-rateLabel")(0).NextSibling.innerHTML     ' Reurns "0" (not the rate quoted

End Sub
Run Code Online (Sandbox Code Playgroud)

有我已经印刷在上面的代码和当我看着一个电平向上在2个兄弟节点innerHTMLparentElement它为什么发生这种情况仍然是不明确(I具有正确的片的HTML但响应(在父级别 - 但不匹配开发人员工具控制台);

<DIV class=rvl-Rate-rateLabel data-reactid="1920">Current rate</DIV>
<DIV class=rvl-Rate-rateNumber data-reactid="1921">0</DIV>
Run Code Online (Sandbox Code Playgroud)

这是开发人员工具控制台: 在此输入图像描述

Sam*_*Sam 6

站点在加载时重建DOM是很常见的,我想这就是你遇到问题的原因.我可以建议采用略有不同的方法.如果您在浏览器中检查请求,您会发现:

https://www.revolut.com/api/quote/internal?symbol=EURBHD ...
Run Code Online (Sandbox Code Playgroud)

删除EURBHD之后的所有内容,您将更容易解析.