如果要在DHL追蹤網站, 查詢某貨物單號, 預計何時到貨?
網址:https://mydhl.express.dhl/tw/zh/tracking.html#/results?id=4520641915
測試單號:4520641915 (其他測試單號:5385263343)
想要回寫查詢結果彙總到Excel
目前以下程式碼不知哪邊還有問題?(不知道如何抓div的網頁資料) 請高手指教!!
Sub Air_DHL()
Dim url As String
Dim MoXML As Object
Dim MoHtml As Object
url = "https://mydhl.express.dhl/tw/zh/tracking.html#/results?id=4520641915"
Set MoXML = CreateObject("WinHttp.WinHttpRequest.5.1")
Set MoHtml = CreateObject("Htmlfile")
With MoXML
.Open "GET", url, False
.send
MoHtml.body.innerHTML = .responseText
Set span = MoHtml.getElementsByTagName("div")
Sheets("Air_Tracking").Cells(1, 4) = span.innerText
MoHtml.Quit
End With
End Sub
其實用VBA是可以做到的,但怕的是公開之後,被廣為使用。
結果讓DHL的網站不堪負荷,DHL只好將網站改版增加許多反爬蟲機制。
最後演變成爬蟲與反爬蟲的攻防戰,結果倒楣的是一般使用者,操作網站時要點擊或輸入一大堆反爬蟲辨認機制。
你 get 完後的 .responseText 已經是
"Not Found The requested URL /tw/zh/tracking.html#/results was not found on this server." 那又怎可能有其他東西呢?
我也只是菜鳥一名,給你一點提示吧.
1.雖然URL可以直接入到你想查的號碼,但電腦中途做了多少東西,肉眼是看不到的吧.
2.中間可以因為 cookies, referer 或一些特別的保安編碼(可以/不可以模仿)導致你用現在的方法不可直接進入該板吧.
上次給你對岸那條 link 你有沒有看? 用點時間多多參考與實習吧.
勸你打消這個念頭
1.如果你只是在練習爬蟲
不要用 DHL 練習
因為有太多人想去爬該網站
他已經加了許多反爬蟲機制(包括記錄你的IP)
不是寫寫 VBA 就可以爬到的
2.如果你是「認真」的工作上需要
那就去申請 DHL 的 Tracking API
既免費又可得到 json 格式資料
省時又省力