常见问题。您正在尝试导入加载后生成的 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)
参数:
- 跟踪器的 URL
- POST 有效负载。单元格 A2 保存您的跟踪号。
- 留空
- 查询 - 让我们选择我们想要的数据。在此示例中,我选择选择运营商描述和整个
scanEventList 条目,但您也可以指定其中的特定元素。
- “noHeaders”仅表示数据。
只需使用 JSON 导入,我们就会为 scanEventList 的每个元素提供一个条目,但第一个是最新的,因此,我们使用 INDEX 检索第一个条目,其中应该包含您需要的内容。
有关 ImportJSON 包的更多帮助,请参阅here。