【发布时间】:2020-10-19 19:25:36
【问题描述】:
我正在尝试创建一个跟踪货运空运单状态的函数。 我在 SO 社区的帮助下创建了以下功能。 我对 HTML 不太熟悉。我使用 GetElementby Tag/ID 等与其他几家航空公司进行了反复试验,结果奏效了。
但是,对于这家特定的航空公司,没有等级名称、标签名称或 ID。 我无法弄清楚如何在附加的image 中获取突出显示的值(所需的值将是顶行中的值,但每次都是同一列)。
有人可以帮我如何在表格中提取“收到”值。
编写的函数大部分都可以工作 用于测试的样品货号 - 59473805
Function FlightStat_VA(cargoNo As Variant) As String
Const Url = "https://www.virginatlanticcargo.com/gb/en/track/track-your-cargo.html?prefix=932&number="
Dim dStatCheck$, deliveryStat$, S$
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", Url & cargoNo & "&track=go", False
.send
S = .responseText
End With
With CreateObject("HTMLFile")
.write S
On Error Resume Next
'Need Help Here
dStatCheck = UCase(.getElementById("...").getElementsByTagName("...")(0).innerText)
On Error GoTo 0
If dStatCheck <> "" Then
deliveryStat = dStatCheck
Else
deliveryStat = "Not Found"
End If
End With
FlightStat_VA = deliveryStat
End Function
【问题讨论】:
-
您有货号示例吗?
-
@Mech 对不起。我忘了添加样品货号。这是一个 - 59473805。我将编辑问题以包括数字。
-
你想要最后一个“收到”还是第一个?
-
我想为这个“收到”。这将是该表中的最后一个条目,因为货物已交付。但基本上我想要的是在该货物编号显示为“已收到”的特定列中获取最新更新事件(顶行)的内部值。例如,如果它是另一个非常新的货号。该表将只有 2 行,跟踪事件按时间倒序显示。 1 个状态在底行显示“货件已预订”。顶行会显示“已在 XYZ24 航班上预订”而不是“已收到”。所以我想要“在 XYZ24 航班上预订”
-
我更新了我的答案,以便更轻松地更改数据。只需在
deliveryStat中修改你想要的内容
标签: excel vba web-scraping