COCO研究院

 找回密碼
 註冊
搜索
樓主: 綠茶妹

[工具] 自動抓近30日期交所期貨rpt檔的python程式

  [複製鏈接]
 樓主| 發表於 10-7-3 10:32 | 顯示全部樓層
回復 14# wldtw2008


    Cool~~wldtw2008大大,你的工具包功能這麼多功能,感謝!
發表於 10-7-3 10:54 | 顯示全部樓層
回復 15# google_hunter


    請問這種轉換過的csv 能貼個檔來看看嗎?
發表於 10-7-3 14:17 | 顯示全部樓層
回復  google_hunter


    請問這種轉換過的csv 能貼個檔來看看嗎?
altubers 發表於 10-7-3 10:54 AM



這是我平常用的格式,為了和以前的歷史資料一致,我使用的時間單位,最小是1分k。
0703.gif
發表於 10-8-25 20:31 | 顯示全部樓層
嗚~剛好看到我自己的Blog,放在我 blog 的只是 sample 版本,
我自己是有另外再寫一個 C# 版本的程式交易,有 UI 介面 可以做即時交易。

RPT 檔其實不用擔心,直接當成 CSV 檔打開就好了,裡面的格式也是用',' 分開,
有任何想要改進的地方,可以到我的 blog 開一下需求。
發表於 10-11-4 00:42 | 顯示全部樓層
使用這個抓資料就太方便了~
其他的就自己加工了~
發表於 10-11-7 19:19 | 顯示全部樓層
綠茶妹真是多才多藝,佩服佩服!
發表於 10-11-15 01:01 | 顯示全部樓層
我只能說
大家都太厲害了
感謝分享
發表於 11-3-6 03:21 | 顯示全部樓層
原來怪雞絲一大堆
感恩︿︿
發表於 11-3-7 18:06 | 顯示全部樓層
TaiFexWebDownloader真的比較方便好用
發表於 11-3-11 22:36 | 顯示全部樓層
以Python 3.2寫的類似功能,檔案會存在 D:\Downloads
位置可以改,在第20行,程式會自動建立該目錄
如果該目錄已有的檔案,不再重複下載,也不會產生無交易日的檔案
  1. import urllib.request
  2. from urllib.error import HTTPError, URLError
  3. from datetime import date, timedelta
  4. import os

  5. def download_file(url, file):
  6.     print('downloading...' + url)
  7.     try:
  8.         req = urllib.request.Request(url)
  9.         req.add_header('User-Agent', 'Mozilla/6.0')
  10.         data = urllib.request.urlopen(req).read()
  11.         with open(file, 'wb') as zip_file:
  12.             zip_file.write(data)
  13.     except HTTPError as e:
  14.             print("HTTP Error:", e.code , url)
  15.     except URLError as e:
  16.             print("URL Error:", e.reason , url)

  17. if __name__ == '__main__':
  18.     download_dir = 'D:/Downloads'
  19.     taifex_url_base = 'http://www.taifex.com.tw/DailyDownload/'
  20.     if not os.path.exists(download_dir):
  21.         os.makedirs(download_dir)
  22.     for i in range(60):
  23.         downloaded_date = date.today() - timedelta(days = i)
  24.         file_name = 'Daily_' + downloaded_date.strftime('%Y_%m_%d') + '.zip'
  25.         local_file = os.path.join(download_dir, file_name)
  26.         rptfile_name = 'Daily_' + downloaded_date.strftime('%Y_%m_%d') + '.rpt'
  27.         file_already_exists = os.path.exists(local_file) or os.path.exists(os.path.join(download_dir, rptfile_name))
  28.         if file_already_exists:
  29.             print('zip/rpt file already exists: ' + local_file)
  30.         else:
  31.             url = taifex_url_base + file_name
  32.             download_file(url, local_file)
  33.     print('Completed!')
複製代碼

評分

參與人數 1金錢 +1 收起 理由
lwhuang + 1 太強了

查看全部評分

 樓主| 發表於 11-4-30 08:29 | 顯示全部樓層
本帖最後由 綠茶妹 於 11-4-30 08:53 AM 編輯

回復 25# fygul


    太好了,我可以去和小娃領賞了。感謝!
http://coco-in.net/thread-10101-1-1.html

讚讚讚!!
我剛才試用很好用,沒有空檔案的問題!
發表於 11-6-19 00:32 | 顯示全部樓層
謝謝綠茶妹和fygul無私的分享!
發表於 11-6-19 03:52 | 顯示全部樓層
兩行程式碼下載

    前30個交易日期貨每筆成交資料
    前30個交易日期貨價差委託成交概況表
    前30個交易日期貨價差每筆成交資料

    前30個交易日選擇權每筆成交資料
共120個zip檔。
已存在的檔案不會再抓。
Win7 + Python 2.7.2測試通過。

  1. import itertools, os.path, re, urllib
  2. map(lambda (e, u, f):  urllib.urlretrieve(u, f) if not e else None, map(lambda (x, y):  (os.path.exists(y), 'http://www.taifex.com.tw/' + ('DailyDownload', 'DailyDownload_B', 'DailyDownload_C', 'OptionsDailyDownload')[x // 30] + '/' + y, y), enumerate(itertools.chain.from_iterable(map(lambda y: re.findall('[^/]*.zip', urllib.urlopen(y).read()), map(lambda z: 'http://www.taifex.com.tw/chinese/3/3_' + z + '.asp', ('1_3', '1_4', '1_5', '2_4')))))))
複製代碼

評分

參與人數 1金錢 +2 收起 理由
fygul + 2 向Python高手致敬

查看全部評分

發表於 11-6-19 10:54 | 顯示全部樓層
光看pythonist這名字就知道應是Python行家
Win2k + python 2.7.1實測可用
發表於 11-6-19 11:23 | 顯示全部樓層
本帖最後由 minitrader 於 11-6-19 11:25 AM 編輯

之前裝了 Python 2.5 不能跑 pythonist 的 script, 裝了 2.7 再重啟電腦就可以了.  感恩
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 24-4-27 12:30

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 | AI繪圖AI超擬真美女AI beauty AI Stable DiffusionAI正妹AI Lookbook