COCO研究院

 找回密碼
 註冊
搜索
查看: 8605|回復: 9

證交所即時資訊的抓取

[複製鏈接]
發表於 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. 用 VBA  code 如下:
===========================
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的方法也可以...謝謝!!




VBA下載

VBA下載

Chrome 開發工具看到的

Chrome 開發工具看到的
發表於 17-9-18 16:33 | 顯示全部樓層
playhigh 發表於 17-9-18 11:07
可以參考(本站)這裡:
【EXCEL】(2017年5月版)台指期權日報,每日盤後交易資料

感謝無私地分享
回復 支持 1 反對 0

使用道具 舉報

發表於 17-9-7 13:09 | 顯示全部樓層
發表於 17-9-7 16:32 | 顯示全部樓層
distagon 發表於 17-9-7 13:09
有現成的
http://twstock.readthedocs.io/zh_TW/latest/

感謝分享   

發表於 17-9-13 20:45 | 顯示全部樓層
本帖最後由 quickfixer 於 17-9-13 22:26 編輯

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

評分

參與人數 1金錢 +1 收起 理由
hipper68 + 1 感謝分享, 找到了...研究中

查看全部評分

發表於 17-9-18 11:07 | 顯示全部樓層
發表於 17-9-19 06:03 | 顯示全部樓層
不用ie物件,程式比較難寫,但是用他的方式抓資料
速度超快,尤其是抓一大堆資料的時候,比使用ie物件快太多了
可惜的是他給的都是範例,真的只有範例啊
計算分析功能都沒有,要自己加上去
不過最讓人困擾的就是如何抓資料,要感謝人家搞定最麻煩的部份了

試看看吧,雖然大部份是抄來的

test.zip (22.17 KB, 下載次數: 358)

評分

參與人數 1金錢 +2 收起 理由
hipper68 + 2 感謝分享

查看全部評分

 樓主| 發表於 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



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



再次感謝大大!!
你的檔案,  parse很快...
來整理一下...
感謝感謝!!
發表於 17-9-19 12:52 | 顯示全部樓層
hipper68 發表於 17-9-19 11:32
再次感謝大大!!
你的檔案,  parse很快...
來整理一下...

我是抄人家的範例寫的啦
從那裡學到很多特殊技巧
不好意思您的code為什麼抓很慢我不清楚
用範例改寫的都很快
單筆資料跟ie物件比起來至少快10倍以上
資料多時更明顯,很恐怖可以快100倍
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-12-22 17:39

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |