带有哈希字符的XMLHTTP

时间:2019-03-25 10:16:02

标签: vba web-scraping xmlhttprequest



我正在尝试使用xmlhttp和VBA抓取网站。

网址具有井号(#)符号,并且被VBA误解了。

这是与此处说明的问题相同的问题: Error in XMLHTTP Get request with Special character in URL
代码如下:

Sub webscraping()
Dim x               As String
Dim req             As MSXML2.XMLHTTP60
Dim doc             As HTMLDocument

x = "https://search.gleif.org/#/search/"

Set req = New MSXML2.XMLHTTP60
    With req
        .Open "GET", x, False
        .send
        If .Status <> 200 Then
            MsgBox "Http Request Error"
            Exit Sub
        End If
        Set doc = New MSHTML.HTMLDocument
        doc.body.innerHTML = .responseText
    End With
End Sub

提前谢谢

1 个答案:

答案 0 :(得分:0)

您可以通过直接使用您的搜索字词调用API来避免此情况,如下所示。我正在使用json parser处理json响应。将.bas添加到您的项目的链接后,还可以进入VBE>工具>引用>添加对Microsoft Scripting Runtime的引用。

请注意,您可以在此处更改queryString参数:"&page%5Bnumber%5D=1&page%5Bsize%5D=15"。当前是第1页,每页记录为15。

VBA:

Option Explicit
Public Sub webscraping()
    Dim url As String
    Dim req As MSXML2.XMLHTTP60
    Dim doc As HTMLDocument
    Dim json As Object
    Const TERM = "banana corp."

    url = "https://api.gleif.org/api/v1/lei-records?filter%5Bfulltext%5D=" & Application.EncodeURL(TERM) & "&page%5Bnumber%5D=1&page%5Bsize%5D=15"

    Set req = New MSXML2.XMLHTTP60
    With req
        .Open "GET", url, False
        .send
        If .Status <> 200 Then
            MsgBox "Http Request Error"
            Exit Sub
        End If
        Set json = JsonConverter.ParseJson(.responseText)
    End With
    Stop
    'Do something with json
End Sub

返回了很多信息,因此这里只是其中的一部分:

在此处研究API:

https://www.gleif.org/en/lei-data/gleif-lei-look-up-api/access-the-api

相关问题