gpt4 book ai didi

excel - VBA 使用 JavaScript 元素从 URL 中抓取 HTML

转载 作者:行者123 更新时间:2023-12-03 02:18:50 25 4
gpt4 key购买 nike

使用以下代码

Sub Test()
'Must have the Microsoft HTML Object Library reference enabled
Dim oHtml As HTMLDocument
Dim oElement As Object
Dim link As String

Set oHtml = New HTMLDocument

With CreateObject("WINHTTP.WinHTTPRequest.5.1")
.Open "GET", "https://www.afklcargo.com/WW/en/local/app/index.jsp#/tntdetails/074-26126063", False
.Send
oHtml.Body.innerHTML = .responseText
End With

End Sub

我无法获取实际的 HTML,我相信这是因为该网站正在使用 Javascript?我怎样才能规避这个问题以获得我的值(value)?

enter image description here

最佳答案

它是通过另一个 xhr 调用动态添加的,您可以在浏览器的网络选项卡中找到该调用。因此,将您的 url 更改为该地址,然后使用 json 解析器来解析响应。

使用json解析器,如jsonconverter.bas来处理响应。在名为 JsonConverter 的标准模块中安装该链接的代码后,转到 VBE > 工具 > 引用 > 添加对 Microsoft 脚本运行时的引用。

您从 json 中提取您的值,该值作为 unix 时间戳返回。

1561791600000  >  2019-06-29T07:00:00.000Z

json 响应实际上包含有关跟踪的所有信息。您可以探索一下here .

<小时/>
Option Explicit

Public Sub Test()
Dim json As Object

With CreateObject("WINHTTP.WinHTTPRequest.5.1")
.Open "GET", "https://www.afklcargo.com/resources/tnt/singleAwbDetails?awbId=074-26126063", False
.send
Set json = JsonConverter.ParseJson(.responseText)
Debug.Print json("booking")(1)("arrivalDateLong")("local")
End With
End Sub
<小时/>

Schmidt 和 Navion 提供的两个函数,用于将直接从 here 复制的戳记转换为日期时间.

Function Epoch2Date(ByVal E As Currency, Optional msFrac) As Date
Const Estart As Double = #1/1/1970#
msFrac = 0
If E > 10000000000@ Then E = E * 0.001: msFrac = E - Int(E)
Epoch2Date = Estart + (E - msFrac) / 86400
End Function

Function Epoch2DateS(ByVal epochstamp$) As Date
Epoch2DateS = CVDate(CDbl(DateSerial(1970, 1, 1)) + Int(Val(epochstamp$) / 1000#) / 86400)
End Function
<小时/>

注意

使用 json 解析器是可靠且推荐的方法,但您也可以使用正则表达式或 split 函数来获取值。

关于excel - VBA 使用 JavaScript 元素从 URL 中抓取 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56860363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com