我正在尝试使用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
提前谢谢
答案 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