vba xmlhttp 抓取网页(Usage:ExampleUsage:用法示例:Example)

优采云 发布时间: 2021-12-23 23:02

  vba 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 提取特定的数据片段。非常方便的基本抓取需求。

  以上链接中的更多信息。上面收录的链接中有更多信息。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线