ImportXML Google表格用于货运包裹跟踪

问题描述

我想直接从Google表格中跟踪每个FEDEX,dhl和UPS的发货状态。我正在使用importxml函数: = IMPORTXML(“ https://www.fedex.com/apps/fedextrack/?action=track&tracknumbers=”&C2&“&locale = zh_CN&cntry_code = us”,“ // h1 / div [@ class =” redesignSnapshottVC snapshotController_addr_label dest“] /标题”)

但是它显示错误。 为此附上我的工作表链接https://docs.google.com/spreadsheets/d/1E1L0rn9-H4MCutI1On2uHDkkPo1pdjRpv014YREGIdU/edit?usp=sharing

请告诉我们什么是最好的方法。我来自非技术背景。 非常感谢您的帮助!

解决方法

常见问题。您正在尝试导入加载后生成的html。这意味着我们必须寻找所需数据的生成方式。

数据源

在检查该站点时,我发现它正在对URL https://www.fedex.com/trackingCal/track进行XHR,并且它是通过POST进行的,且负载很长。响应为JSON格式。注意,有一个scanEventList条目。

"scanEventList": [{
    "date": "2020-07-15","time": "13:15:00","gmtOffset": "-07:00","status": "Delivery exception","statusCD": "DE","scanLocation": "SAN BERNARDINO,CA","scanDetails": "Future delivery requested","scanDetailsHtml": "","rtrnShprTrkNbr": "","statusExceptionCode": "17","isClearanceDelay": false,"isDelivered": false,"isDelException": true,"isException": true
},...
]

解决方案

首先,从GitHub获得ImportJSON脚本,并将其添加到工作表的脚本中(工具>脚本编辑器)。这不是最令人惊奇的事情,但这至少会给我们ImportJSONViaPost()来获取我们想要的数据:

=INDEX(ImportJSONViaPost("https://www.fedex.com/trackingCal/track","data=%7B%22TrackPackagesRequest%22%3A%7B%22appType%22%3A%22WTRK%22%2C%22appDeviceType%22%3A%22DESKTOP%22%2C%22supportHTML%22%3Atrue%2C%22supportCurrentLocation%22%3Atrue%2C%22uniqueKey%22%3A%22%22%2C%22processingParameters%22%3A%7B%7D%2C%22trackingInfoList%22%3A%5B%7B%22trackNumberInfo%22%3A%7B%22trackingNumber%22%3A%22"&A2&"%22%2C%22trackingQualifier%22%3A%22%22%2C%22trackingCarrier%22%3A%22%22%7D%7D%5D%7D%7D&action=trackpackages&locale=en_US&version=1&format=json","/TrackPackagesResponse/packageList/scanEventList,/TrackPackagesResponse/packageList/trackingCarrierDesc","noHeaders"),1)

参数:

  1. 跟踪器的网址
  2. POST有效负载。单元格A2保留您的跟踪号码。
  3. 留空
  4. 查询-让我们选择所需的数据。在此示例中,我选择选择运营商描述和整个scanEventList条目,但您也可以指定其中的特定元素。
  5. “ noHeaders”仅表示数据。

仅使用JSON导入即可为scanEventList的每个元素提供一个条目,但第一个元素是最新的,因此,我们使用INDEX来检索第一个条目,其中应包含您所需要的内容需要。

有关ImportJSON包的其他帮助,请参见here