joehuang wrote:
url="https://www.ctbcbank.com/twrbo/zh_tw/dep_index/dep_ratequery/dep_foreign_rates.html"
屬[POST]方法:但好像也找不到像 825樓那樣 有 FROM DATA 可看到他的抓程式的參數部份
不知這種網站要如何判斷他要用那種方式來爬呢?
剛剛大概看了一下
因為這個網站所有的參數都是用json回傳的,所以看不到參數
網頁上的表格,也全部都不是表格,是json
而且更麻煩的是,同一個網址(網頁),等個幾分鐘後,再重新整理,還會跳到別的網頁
Header 還要特別設定為 json格式才行
.setRequestHeader "Content-type", "application/json"
.setRequestHeader "Accept", "application/json"
有點像(751樓+756樓+758樓)範例的更複雜版網頁
下載資料用的key(IIhfvu),這個key還會變來變去的,滑鼠一點網頁就變
程式碼還要加上很多的防呆、除錯
只要一改版,程式碼沒辦法只改少少幾行
建議找看看是否有ctbcbank,csv檔下載的網址?
或是另找有提供ctbcbank資料的網站?,不要自找麻煩
如果一定要用ctbcbank,這是慢速版範例,請參考
xml版改天太閒再寫
Sub test()
Dim IE As Object, Url As String
ActiveSheet.Cells.Clear
Application.ScreenUpdating = False
Set IE = CreateObject("InternetExplorer.Application")
Url = "https://www.ctbcbank.com/twrbo/zh_tw/dep_index/dep_ratequery/dep_foreign_rates.html"
With IE
.Visible = True
.Navigate Url
Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
Application.Wait (Now + TimeValue("0:00:10"))
IE.ExecWB 17, 0
IE.ExecWB 12, 2
ActiveSheet.Cells(1, 1).Select
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
ActiveSheet.Rows("1:583").Delete Shift:=xlUp
ActiveSheet.Rows("52:350").Delete Shift:=xlUp
ActiveSheet.Cells(1, 1).Select
End With
IE.Quit
Set IE = Nothing
Application.ScreenUpdating = True
End Sub