目前尚不清楚您要查找数据的哪一部分,但我假设您需要主表。
多个API被调用到端点https://gateway-iboard.ssi.com.vn/graphql
,用不同的请求体来获取具体的信息。
在 DevTools 中,主表的请求正文如下:
{"operationName":"stockRealtimes","variables":{"exchange":"hose"},"query":"query stockRealtimes($exchange: String) {\n stockRealtimes(exchange: $exchange) {\n stockNo\n ceiling\n floor\n refPrice\n stockSymbol\n stockType\n exchange\n matchedPrice\n matchedVolume\n priceChange\n priceChangePercent\n highest\n avgPrice\n lowest\n nmTotalTradedQty\n best1Bid\n best1BidVol\n best2Bid\n best2BidVol\n best3Bid\n best3BidVol\n best4Bid\n best4BidVol\n best5Bid\n best5BidVol\n best6Bid\n best6BidVol\n best7Bid\n best7BidVol\n best8Bid\n best8BidVol\n best9Bid\n best9BidVol\n best10Bid\n best10BidVol\n best1Offer\n best1OfferVol\n best2Offer\n best2OfferVol\n best3Offer\n best3OfferVol\n best4Offer\n best4OfferVol\n best5Offer\n best5OfferVol\n best6Offer\n best6OfferVol\n best7Offer\n best7OfferVol\n best8Offer\n best8OfferVol\n best9Offer\n best9OfferVol\n best10Offer\n best10OfferVol\n buyForeignQtty\n buyForeignValue\n sellForeignQtty\n sellForeignValue\n caStatus\n tradingStatus\n currentBidQty\n currentOfferQty\n remainForeignQtty\n session\n __typename\n }\n}\n"}
因此,您需要将上述请求正文发送到端点,该端点将为您提供一个包含主表原始数据的 JSON 响应,然后您需要自行处理它们以获得您想要的内容。
Private Sub Get_ssi_data()
Dim xmlhttp As Object
Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
Dim reqBody As String
reqBody = "{""operationName"":""stockRealtimes"",""variables"":{""exchange"":""hose""},""query"":""query stockRealtimes($exchange: String) {\n stockRealtimes(exchange: $exchange) {\n stockNo\n ceiling\n floor\n refPrice\n stockSymbol\n stockType\n exchange\n matchedPrice\n matchedVolume\n priceChange\n priceChangePercent\n highest\n avgPrice\n lowest\n nmTotalTradedQty\n best1Bid\n best1BidVol\n best2Bid\n best2BidVol\n best3Bid\n " & _
"best3BidVol\n best4Bid\n best4BidVol\n best5Bid\n best5BidVol\n best6Bid\n best6BidVol\n best7Bid\n best7BidVol\n best8Bid\n best8BidVol\n best9Bid\n best9BidVol\n best10Bid\n best10BidVol\n best1Offer\n best1OfferVol\n best2Offer\n best2OfferVol\n best3Offer\n best3OfferVol\n best4Offer\n best4OfferVol\n best5Offer\n best5OfferVol\n best6Offer\n best6OfferVol\n best7Offer\n best7OfferVol\n best8Offer\n best8OfferVol\n best9Offer\n best9OfferVol\n best10Offer\n best10OfferVol\n buyForeignQtty\n buyForeignValue\n sellForeignQtty\n sellForeignValue\n caStatus\n tradingStatus\n currentBidQty\n currentOfferQty\n remainForeignQtty\n session\n __typename\n }\n}\n""}"
xmlhttp.Open "POST", "https://gateway-iboard.ssi.com.vn/graphql", False
xmlhttp.setRequestHeader "Content-Type", "application/json"
xmlhttp.send reqBody
'xmlhttp.send (reqBody) 'For Excel 2013 (Credit to SIM in comment)
Debug.Print xmlhttp.responseText
End Sub
编辑 - 找到请求正文
在 Chrome Devtools 的“网络”选项卡下,您将看到该网站发出了多个请求graphql
(通过 Fetch/XHR 过滤以获得列表中较小的结果)
因为它们都调用相同的端点,这使得识别正确的表变得困难,所以我单击每个请求并查看其“响应”选项卡(即 JSON 字符串)。
下面你可以看到我找到了返回主表数据的请求(JSON字符串通常是一长行,你可以点击Pretty Print(红圈)以方便阅读)
找到所需的请求后,请返回Headers选项卡并查看选项卡的末尾,您会发现请求有效负载请求正文部分。您可以点击view source
获取用于复制粘贴的纯文本版本。