【发布时间】:2019-01-29 20:24:54
【问题描述】:
使用 Google 表格。 我正在尝试在此页面上获取 ETA 日期: https://www.hapag-lloyd.com/en/online-business/tracing/tracing-by-booking.html?blno=HLCUEUR181027806#
将来,我将使用不同的 blno,因此 ETA 将根据 blno(提单号)而改变。未来,blno 将来自一个专栏。
我使用标准的网页检查方法来确定我想要的元素的 xpath 如下: //*[@id="ext-gen156"]
这是 ETA 日期的 XPath,在本例中是 2018 年 12 月 4 日,当您访问该页面时。
我在 E4 中填充了: https://www.hapag-lloyd.com/en/online-business/tracing/tracing-by-booking.html?blno=HLCUEUR181027806#
我在 E5 中填充了: //*[@id="ext-gen156"]
然后公式“=importxml(E4,E5)”给出结果“N/A”(在 F4 上)。
如果我将 E4 更改为 https://en.wikipedia.org/wiki/List_of_T_postal_codes_of_Canada
和 E5到 //*[@id="mw-content-text"]/div/table[1]/tbody/tr[1]/td[6]/span/a[1]
它有效...它从不同的网站获取不同的信息。
我怀疑我在上述第一种情况下遇到问题的原因是它不是静态页面。也许它只适用于静态页面。
我试图理解 XPath 的含义,但它也很混乱。如果有人给我指出一个很好的解释,那也很有价值。例如,以下文档说您应该使用“。”选择当前节点。在我尝试使用 XPath 的上下文中,当前是什么意思?似乎没有意义。
https://www.w3schools.com/xml/xpath_syntax.asp
我们将不胜感激任何策略指导。我可能做错了。我也联系了 Hapag-Lyod,看看他们是否有 RSS 提要,虽然我也是新手。
那么,对于那些做过类似事情的专家来说,解决这个项目的可能方向是什么?
我正在倒退。我有一个目标,但我不知道所有的技术。我的背景更多是客户端应用程序,因此在涉及 Web 应用程序时我遇到了研究问题。希望我足够详细,但如果没有,请告诉我如何改进问题,我很乐意这样做。
【问题讨论】:
-
FWIW 我试过你的代码 - 没用(真的不奇怪)。但是后来我查看了页面源,没有id
ext-gen156。当您说页面每次都是动态创建时,我认为您可能是对的。 FWIW,我使用 Chrome(和 Firefox)并提取了“实际”xpath,但这也不起作用。 -
特迪诺兹,感谢您的尝试。所以我认为答案是 Hapaq Lyod 必须提供网络服务。我不知道如何完成这项工作。再次感谢。
-
赫伯罗特系统似乎非常适合人工查询。 FWIW,我会直接问他们是否(也)有公共 API,和/或他们是否可以建议如何自动化该过程,以便可以检索数据并将其存储在电子表格中(例如 Google)。
标签: xml xpath google-sheets google-sheets-api google-sheets-importxml