【问题标题】:VBA scrape web data which is contained in JavascriptVBA 抓取包含在 Javascript 中的 Web 数据
【发布时间】:2021-01-01 00:34:42
【问题描述】:

我正在尝试从以下网站获取网络表格数据,并在右侧提取有关保单费率的第一个表格。

https://www.researchonline.se/macro/our_forecasts

使用以下代码只是为了查看它是否吐出所需的数据,但不断收到错误 91。怀疑我需要在我的代码中考虑的关于 Javascript 的某些内容?下面是我的代码。

Dim request As Object
Dim response As String
Dim html As New HTMLDocument
Dim website As String
Dim price As Variant

' Website to go to.
website = "https://www.researchonline.se/macro/our_forecasts"

' Create the object that will make the webpage request.
Set request = CreateObject("MSXML2.XMLHTTP")

' Where to go and how to go there - probably don't need to change this.
request.Open "GET", website, False

' Get fresh data.
request.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"

' Send the request for the webpage.
request.send

' Get the webpage response data into a variable.
response = StrConv(request.responseBody, vbUnicode)

' Put the webpage into an html object to make data references easier.
html.body.innerHTML = response

' Get the price variable from the specified element on the page and just check in a message box if that is the correct data.

price = html.getElementsByTagName("table")(0).innerText
' Output the price into a message box.
MsgBox price

【问题讨论】:

    标签: javascript vba web-scraping


    【解决方案1】:
    Set request = CreateObject("MSXML2.XMLHTTP")
    

    上面无法执行 javascript ,虽然不是调用 url 并从表中获取它。你可以直接使用他们的API

    例如,为了获得政策利率,该网站使用 API(有很多 API,我通过查看该网站看到了)。一个例子是

    https://www.researchonline.se/api/MacroAdmin/GetForecast?name=policy&start=Mon%20Sep%2014%202020&end=Tue%20Sep%2014%202021

    这将返回一个 xml kindda 响应,您可以使用 MSXML2.XMLHTTP 对其进行解析

    【讨论】:

    • 我明白了,感谢您的快速评论!请问我如何调用您在上面检索到的响应页面?
    猜你喜欢
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    相关资源
    最近更新 更多