iT邦幫忙

0

VBA 網抓 問題

  • 分享至 

  • xImage

如果要在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

看更多先前的討論...收起先前的討論...
畫面這麼多資訊,你要擷取哪一個?
bzboy iT邦新手 5 級 ‧ 2021-12-24 09:15:09 檢舉
想擷取第一個表格的資訊:
(資訊如下)
提單號碼 4520641915
已派送:
取得送達簽章證明
星期四, 十二月 16, 2021 在 11:08
寄件地點服務區域:
FREMONT, CA - USA

感謝!








目的地點服務區域:
TAINAN - TAIWAN
都塞在D1儲存格?
bzboy iT邦新手 5 級 ‧ 2021-12-24 10:41:28 檢舉
不用,抓excel後(任一個sheet,不限儲存格)我會再自行處理,感謝
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
paicheng0111
iT邦大師 5 級 ‧ 2021-12-24 10:41:17

其實用VBA是可以做到的,但怕的是公開之後,被廣為使用。
結果讓DHL的網站不堪負荷,DHL只好將網站改版增加許多反爬蟲機制。

最後演變成爬蟲與反爬蟲的攻防戰,結果倒楣的是一般使用者,操作網站時要點擊或輸入一大堆反爬蟲辨認機制。

0
blanksoul12
iT邦研究生 5 級 ‧ 2021-12-24 10:56:56

你 get 完後的 .responseText 已經是
"Not Found The requested URL /tw/zh/tracking.html#/results was not found on this server." 那又怎可能有其他東西呢?
我也只是菜鳥一名,給你一點提示吧.
1.雖然URL可以直接入到你想查的號碼,但電腦中途做了多少東西,肉眼是看不到的吧.
2.中間可以因為 cookies, referer 或一些特別的保安編碼(可以/不可以模仿)導致你用現在的方法不可直接進入該板吧.
上次給你對岸那條 link 你有沒有看? 用點時間多多參考與實習吧.

2
海綿寶寶
iT邦大神 1 級 ‧ 2021-12-24 17:46:28

勸你打消這個念頭

1.如果你只是在練習爬蟲
不要用 DHL 練習
因為有太多人想去爬該網站
他已經加了許多反爬蟲機制(包括記錄你的IP)
不是寫寫 VBA 就可以爬到的

2.如果你是「認真」的工作上需要
那就去申請 DHL 的 Tracking API
既免費又可得到 json 格式資料
省時又省力

我要發表回答

立即登入回答