vba xmlhttp 抓取网页(Usage:ExampleUsage:用法示例:Example)
优采云 发布时间: 2021-12-23 23:02vba xmlhttp 抓取网页(Usage:ExampleUsage:用法示例:Example)
如果有理由需要使用 VBA 执行此操作,也可以执行此操作,尽管需要以某种方式进行一些额外的工作。做一些额外的工作,但也可以做到。
为了从任何站点加载 JSON 或 HTML,我使用此函数:为了从任何站点加载 JSON 或 HTML,我使用此函数:
Public Function getHTTP(ByVal sReq As String) As String
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", sReq, False
.Send
getHTTP = StrConv(.responseBody, vbUnicode)
End With
End Function
示例用法:示例用法:
由于我不确定您从何处获取 JSON 数据,这里有一个使用 Stack Exchange API 显示 Stack Overflow 站点状态的示例:由于我不确定从何处获取 JSON 数据,以下是示例使用 Stack Exchange API 显示 Stack Overflow 站点的状态:
Sub GetSiteInfo()
Const url = "https://api.stackexchange.com/2.2/info?site=stackoverflow"
Dim json As String
json = getHTTP(url) 'get JSON response
If InStr(json, """error_id""") > 0 Or json = "" Then 'check for error
MsgBox "There was a problem." & vbLf & vbLf & json, vbCritical
Exit Sub
End If
json = Mid(json, InStr(json, "[{""") + 3) 'tidy response with string functions
json = Left(json, InStr(json, "}],") - 1)
json = Replace(Replace(Replace(json, Chr(34), ""), ",", vbNewLine), "_", " ")
json = Replace(StrConv(Replace(json, ":", " :" & vbTab & vbTab _
& vbTab), vbProperCase), " Per ", "/")
MsgBox json, vbInformation, "Site Statistics" 'display response
End Sub
注意如何使用基本的字符串函数来管理像这样的简单响应的提取。
使用基本字符串函数提取值使用基本字符串函数提取值
再举一个例子,使用问题顶部的 JSON 数据,如果字符串在一个名为 json 的变量中,并且您想提取 bestBuy 的值,一种方法(几种可能的方法)是这样的:再举一个例子,使用问题顶部的JSON数据,如果字符串在一个名为json的变量中,并且您想提取bestBuy的值,则一种方法(几种可能的方法)如下:
Sub jsonExtract_Demo()
Const json = "aaaaaaa""bestBuy"": ""6.04"",." 'for demo
Dim pStart As Long, pStop As Long, bestBuy As Single
Dim prefix As String, suffix As String
prefix = "bestBuy"": """ 'equivalent to: "bestBuy": "
suffix = """" 'equivalent to a single "
pStart = InStr(json, prefix) + Len(prefix) 'find beginning of value
pStop = InStr(pStart, json, suffix) 'find end of value
bestBuy = CSng(Mid(json, pStart, pStop - pStart)) 'extract & convert value
MsgBox "The value for 'bestBuy` is : " & bestBuy, vbInformation
End Sub
WEBSERVICE 工作表功能 WEBSERVICE 工作表功能
我想指出的最后一件事是一个经常被忽视的 Excel 工作表函数,它适用于大多数纯文本响应(例如这个 JSON 示例):我想指出的最后一件事是一个经常被忽视的 Excel 工作表函数,适用于大多数纯文本响应(例如这个 JSON 示例):
输入工作表单元格:输入工作表单元格:
=WEBSERVICE("https://raw.githubusercontent.com/bahamas10/css-color-names/master/css-color-names.json")
...您将立即看到原创文本结果,准备好根据需要使用工作表函数进行操作...。在 XML 响应的情况下,WEBSERVICE 可以与 FILTERXML 结合使用 XPath 提取特定的数据片段,这对于基本的抓取需求非常方便。对于 XML 响应,WEBSERVICE 可以与 FILTERXML 结合使用 XPath 提取特定的数据片段。非常方便的基本抓取需求。
以上链接中的更多信息。上面收录的链接中有更多信息。