我正在尝试从 UPS 的网站上抓取一些跟踪数据,我可以使用 MSInternet Controls 并打开一个 IE 实例来让它工作,但是当我尝试使用 XML 请求来做同样的事情以节省时间时,我可以'似乎没有分配我需要的元素,所以我可以从中提取 innerText 。
问题似乎出在我使用 getelementsbyid 方法设置 HTMLTrackStatus 的地方。当我在打印到即时窗口之前在代码中停止时,我检查 HTMLTrackStatus 的内容,它显示为“Nothing”
当我运行代码时,错误窗口告诉我该对象或变量未设置。这是有道理的,因为它没有被设置,但我无法弄清楚为什么它没有使用该 ID(确实存在)返回我的 HTML 元素。
我可以使用 MS Internet 控件和使用 VBA 打开 IE 从这个 HTML 元素获取跟踪状态,但这很慢。
将 XMLPage 调暗为新的 MSXML2.ServerXMLHTTP60 将 HTMLDoc 调暗为新的 MSHTML.HTMLDocument 将 HTMLTrackStatus 调暗为 MSHTML.IHTMLElement
XMLPage.Open "GET", " https://www.ups.com/track?loc=en_US&tracknum=1Z9E700W0317182871&requester=WT/trackdetails ", False XMLPage.send '发送请求
HTMLDoc.body.innerHTML = XMLPage.responseText
设置 HTMLTrackStatus = HTMLDoc.getElementById("stApp_txtPackageStatus")
Debug.Print HTMLTrackStatus.innerText
我将停止点放在调试行,当我检查 HTMLTrackStatus 的内容时,它返回“nothing”。为什么这不返回我需要的元素?