从站点抓取数据时出现问题
Problems scraping figures from site
我已经习惯了抓取,这就是让这个问题变得非常烦人的原因 - 我正在尝试使用 GET 方法抓取 VBA 但要获得 EUR 对 BHD 的汇率由 Revolut 提供并使用了以下代码:
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
我在上面的代码中打印了 2 个兄弟节点,当我向上查看 parentElement
的 innerHTML
时,仍然不清楚为什么会这样(我有 HTML 的正确部分,但响应是(在父级别 - 但与开发人员工具控制台不匹配);
<DIV class=rvl-Rate-rateLabel data-reactid="1920">Current rate</DIV>
<DIV class=rvl-Rate-rateNumber data-reactid="1921">0</DIV>
开发者工具控制台如下:
网站在加载时重建 DOM 是很常见的,我想这就是您遇到问题的原因。我可以建议采用稍微不同的方法。
如果您在浏览器中检查请求,您会发现:
https://www.revolut.com/api/quote/internal?symbol=EURBHD ...
删除 EURBHD 之后的所有内容,您将更容易解析。
这是获取转换值的整个脚本的样子:
Sub GetVal()
Dim res As Variant
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://www.revolut.com/api/quote/internal?symbol=EURBHD", False
.send
res = .responseText
End With
res = Split(Split(res, "rate"":")(1), ",")(0)
MsgBox res
End Sub
我已经习惯了抓取,这就是让这个问题变得非常烦人的原因 - 我正在尝试使用 GET 方法抓取 VBA 但要获得 EUR 对 BHD 的汇率由 Revolut 提供并使用了以下代码:
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
我在上面的代码中打印了 2 个兄弟节点,当我向上查看 parentElement
的 innerHTML
时,仍然不清楚为什么会这样(我有 HTML 的正确部分,但响应是(在父级别 - 但与开发人员工具控制台不匹配);
<DIV class=rvl-Rate-rateLabel data-reactid="1920">Current rate</DIV>
<DIV class=rvl-Rate-rateNumber data-reactid="1921">0</DIV>
开发者工具控制台如下:
网站在加载时重建 DOM 是很常见的,我想这就是您遇到问题的原因。我可以建议采用稍微不同的方法。 如果您在浏览器中检查请求,您会发现:
https://www.revolut.com/api/quote/internal?symbol=EURBHD ...
删除 EURBHD 之后的所有内容,您将更容易解析。
这是获取转换值的整个脚本的样子:
Sub GetVal()
Dim res As Variant
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://www.revolut.com/api/quote/internal?symbol=EURBHD", False
.send
res = .responseText
End With
res = Split(Split(res, "rate"":")(1), ",")(0)
MsgBox res
End Sub