證交所即時資訊的抓取
想抓取的網頁: (用 IE 才能正常,否則上面的連結會不完全 )http://mis.twse.com.tw/stock/group.jsp?ind=TIDX&ex=tse&currPage=0&type=fixed
用了2個方法都不行:
1. IQY 下載表格, 全部都是"-"
2. 用 VBAcode 如下:
===========================
Sub sbManualRefresh()
'Dim HttpReq As New MSXML2.XMLHTTP30
Dim HttpReq As Object
Set HttpReq = CreateObject("MSXML2.XMLHTTP.3.0")
HttpReq.Open "GET", "http://mis.twse.com.tw/stock/group.jsp?ind=TIDX&ex=tse&type=fixed", False
HttpReq.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
HttpReq.send
If HttpReq.readyState = 4 Then
Call fetchTesData(HttpReq.responseText)
G_NEXTTIME = Now() + TimeValue("00:00:00" & G_INTERVAL)
'MsgBox "complete"
End If
End Sub
=====================================
HttpReq.responseText 裡面,應該是數字的位置一樣都是"-"
(如附圖, 一個是VBA 下載得到的內容, 另一個是Chrome 開發工具中看到的).
請教大家,這個網頁如何透過EXCEL 抓取.....
感謝!! 感謝!!!
ps: Python的方法也可以...謝謝!!
playhigh 發表於 17-9-18 11:07
可以參考(本站)這裡:
【EXCEL】(2017年5月版)台指期權日報,每日盤後交易資料
感謝無私地分享{:4_113:}
有現成的
http://twstock.readthedocs.io/zh_TW/latest/ distagon 發表於 17-9-7 13:09
有現成的
http://twstock.readthedocs.io/zh_TW/latest/
感謝分享{:4_151:}
本帖最後由 quickfixer 於 17-9-13 22:26 編輯
01那邊文書處理區,也有現成的,我都用那篇的範例抓資料,非常快
還在第一頁很好找vba那個就是了,文章內 7/5 其中一個sub大概就是你要的
不好意思,他不同意轉貼,你只能自己過去看
有問題自己問,最好要提供自己寫的程式碼,不然他可能不會理你 可以參考(本站)這裡:
【EXCEL】(2017年5月版)台指期權日報,每日盤後交易資料
不用ie物件,程式比較難寫,但是用他的方式抓資料
速度超快,尤其是抓一大堆資料的時候,比使用ie物件快太多了
可惜的是他給的都是範例,真的只有範例啊{:4_189:}
計算分析功能都沒有,要自己加上去
不過最讓人困擾的就是如何抓資料,要感謝人家搞定最麻煩的部份了
試看看吧,雖然大部份是抄來的{:4_186:}
quickfixer 發表於 17-9-19 06:03
不用ie物件,程式比較難寫,但是用他的方式抓資料
速度超快,尤其是抓一大堆資料的時候,比使用ie物件快太 ...
感謝大大!!
昨天有研究出來..
我換了一個網址 (從網頁 code 挖出來的)....
之前試過不行, 失敗的原因是 timestamp 有問題...
參考 mobile01 的做法就可已順利抓到了...(UNIXTime function)
不過 parse 的function 好慢....還要再找辦法...
附上可以下載的code 供參考...
Function UNIXTime()
UNIXTime = Round(((Date - #1/1/1970#) * 86400 + Timer) * 1000, 0)
End Function
Sub sbManualRefresh()
'Dim HttpReq As New MSXML2.XMLHTTP30
Dim myUrl As String
Dim HttpReq As Object
Dim rt As Integer
Set HttpReq = CreateObject("MSXML2.XMLHTTP.3.0")
myUrl = "http://mis.twse.com.tw/stock/api/getStatis.jsp?ex=tse&delay=0&_=" & UNIXTime
'MsgBox myUrl
HttpReq.Open "GET", myUrl, False
HttpReq.send
If HttpReq.readyState = 4 Then
Call fetchTesData(HttpReq.responseText)
End If
End Sub
quickfixer 發表於 17-9-19 06:03
不用ie物件,程式比較難寫,但是用他的方式抓資料
速度超快,尤其是抓一大堆資料的時候,比使用ie物件快太 ...
再次感謝大大!!
你的檔案,parse很快...
來整理一下...
感謝感謝!!
hipper68 發表於 17-9-19 11:32
再次感謝大大!!
你的檔案,parse很快...
來整理一下...
我是抄人家的範例寫的啦{:4_90:}
從那裡學到很多特殊技巧
不好意思您的code為什麼抓很慢我不清楚
用範例改寫的都很快
單筆資料跟ie物件比起來至少快10倍以上
資料多時更明顯,很恐怖可以快100倍
頁:
[1]