hipper68 發表於 17-9-7 10:30

證交所即時資訊的抓取

想抓取的網頁: (用 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的方法也可以...謝謝!!




cukie 發表於 17-9-18 16:33

playhigh 發表於 17-9-18 11:07
可以參考(本站)這裡:
【EXCEL】(2017年5月版)台指期權日報,每日盤後交易資料



感謝無私地分享{:4_113:}

distagon 發表於 17-9-7 13:09

有現成的
http://twstock.readthedocs.io/zh_TW/latest/

cukie 發表於 17-9-7 16:32

distagon 發表於 17-9-7 13:09
有現成的
http://twstock.readthedocs.io/zh_TW/latest/

感謝分享{:4_151:}   

quickfixer 發表於 17-9-13 20:45

本帖最後由 quickfixer 於 17-9-13 22:26 編輯

01那邊文書處理區,也有現成的,我都用那篇的範例抓資料,非常快
還在第一頁很好找vba那個就是了,文章內 7/5 其中一個sub大概就是你要的
不好意思,他不同意轉貼,你只能自己過去看
有問題自己問,最好要提供自己寫的程式碼,不然他可能不會理你

playhigh 發表於 17-9-18 11:07

可以參考(本站)這裡:
【EXCEL】(2017年5月版)台指期權日報,每日盤後交易資料

quickfixer 發表於 17-9-19 06:03

不用ie物件,程式比較難寫,但是用他的方式抓資料
速度超快,尤其是抓一大堆資料的時候,比使用ie物件快太多了
可惜的是他給的都是範例,真的只有範例啊{:4_189:}
計算分析功能都沒有,要自己加上去
不過最讓人困擾的就是如何抓資料,要感謝人家搞定最麻煩的部份了

試看看吧,雖然大部份是抄來的{:4_186:}

hipper68 發表於 17-9-19 11:28

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



hipper68 發表於 17-9-19 11:32

quickfixer 發表於 17-9-19 06:03
不用ie物件,程式比較難寫,但是用他的方式抓資料
速度超快,尤其是抓一大堆資料的時候,比使用ie物件快太 ...



再次感謝大大!!
你的檔案,parse很快...
來整理一下...
感謝感謝!!

quickfixer 發表於 17-9-19 12:52

hipper68 發表於 17-9-19 11:32
再次感謝大大!!
你的檔案,parse很快...
來整理一下...


我是抄人家的範例寫的啦{:4_90:}
從那裡學到很多特殊技巧
不好意思您的code為什麼抓很慢我不清楚
用範例改寫的都很快
單筆資料跟ie物件比起來至少快10倍以上
資料多時更明顯,很恐怖可以快100倍
頁: [1]
查看完整版本: 證交所即時資訊的抓取