我想跟踪每个联邦快递,DHL和UPS的装运状态直接从谷歌单。我使用的是importxml函数:=IMPORTXML("code=us","//h1/div[@class="redesignSnapshotTVC snapshotController_addr_label dest"]/title")
然而,它显示了错误。为此附加工作表链接:https://docs.google.com/spreadsheets/d/1E1L0rn9-H4MCutI1On2uHDkkPo1pdjRpv014YREGIdU/edit?usp=sharing
请告诉我什么是最好的方法。我来自非技术背景。非常感谢你的帮助!
发布于 2020-09-09 14:46:01
共同的问题。您正在尝试导入加载后生成的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
},
...
]解决方案
首先,从ImportJSON中获取GitHub脚本,并将其添加到工作表的脚本中(Tools > scripts )。这不是最令人惊讶的事情,但它至少会给我们提供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)参数:
scanEventList条目,但是您也可以指定特定的元素。仅使用JSON导入就会为scanEventList的每个元素提供一个条目,但第一个元素是最新的,因此,我们使用INDEX检索第一个条目,该条目应该包含您需要的内容。
有关ImportJSON包的其他帮助,请参见这里。
https://stackoverflow.com/questions/63765125
复制相似问题