COCO研究院

 找回密碼
 註冊
搜索
查看: 10633|回復: 5

[其他程式語言] 證券交易所下載改為https

[複製鏈接]
發表於 19-6-25 02:39 | 顯示全部樓層 |閱讀模式
證券交易所下載改為https, 例如
https://www.twse.com.tw/exchange ... v&date=20190624
原來有使用http下載的要改一下.
我是用vb Webclient每天下載加權5秒tick
lBytes = wb.DownloadData("http://www.twse.com.tw/exchangeReport/MI_5MINS_INDEX?response=csv&date=20190624")

現在比較麻煩
要多加強制跳過憑證驗證

Public Function ValidateServerCertificate(sender As Object, certification As System.Security.Cryptography.X509Certificates.X509Certificate, _
                                              chain As System.Security.Cryptography.X509Certificates.X509Chain, sslPolicyErrors As System.Net.Security.SslPolicyErrors) As Boolean
        Return True
End Function

在下載前要加
ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf ValidateServerCertificate)
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

lBytes = wc.DownloadData("https://www.twse.com.tw/exchangeReport/MI_5MINS_INDEX?response=csv&date=20190624")
這樣就可以正常下載

評分

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

查看全部評分

 樓主| 發表於 19-6-25 02:41 | 顯示全部樓層
要Imports這兩項
Imports System.Net.Security
Imports System.Security.Cryptography.X509Certificates
發表於 19-7-5 16:49 | 顯示全部樓層
這個的話有在網路上找到小程式可以用

感覺還蠻方便的,直接執行程式有參數說明

功能說明

功能說明


依說明看,下載當日的資料可以簡化,確實就順利下載到檔案了

下載當日的資料

下載當日的資料


然後可以用批次檔來設計判斷是否有下載,寫了測試 5MINS.BAT
  1. @echo off
  2. echo %DATE% %TIME%
  3. EzTwseDL ""
  4. if errorlevel 2 goto :DownloadOK
  5. if errorlevel 1 goto :DownloadFaild
  6. goto :EndBat

  7. :DownloadOK
  8. echo Download OK.
  9. goto :EndBat

  10. :DownloadOKFaild
  11. echo Download Faild!
  12. goto :EndBat

  13. :EndBat
複製代碼
執行批次檔就會像這樣

使用批次檔判斷ReturnCode

使用批次檔判斷ReturnCode


我是在乾淨Win7上面試的,想說也到XP試試看,結果是

XP只有到TLS1.0

XP只有到TLS1.0


所以看起來是交易所把TLS1.0的支援給關閉了

不然應該也是可以用吧!

我下載到的工具程式和上面的的批次檔大家也可以試試看

5秒指數資料下載.rar (27.54 KB, 下載次數: 8, 售價: 20 金錢)

寫程式呼叫的話也是變得很簡單

不過這程式有個bug耶! 但只是有礙觀瞻不影響功能
看看有沒有人也像我一樣會發現這問題


發表於 19-11-24 14:35 | 顯示全部樓層
本帖最後由 Prochihua 於 19-11-24 14:36 編輯

謝謝ram大大提供的小程式
我以前是跑出一個txt檔,然後把網址丟到迅雷或是IDM下載
現在稍微改了一下
把以下的程式碼存成python的,然後跟EzTfeDL.exe放在一起再執行就好

  1. import os
  2. import datetime
  3. import time

  4. #取得現在的日期

  5. now=datetime.datetime.now()

  6. #設定開始的日期

  7. start_date_str="2019-11-15"

  8. start_date=datetime.datetime.strptime(start_date_str,'%Y-%m-%d')

  9. #計算相差幾天

  10. days=now-start_date

  11. days=days.days

  12. delta=datetime.timedelta(days=1)

  13. count_days=1

  14. while(count_days<=days+1):
  15.         date_str=start_date.strftime("%Y_%m_%d")
  16.         print(date_str)
  17.         
  18.         #使用EzTfeDL下載期貨和選擇權的資料
  19.         a=os.system("EzTfeDL.exe /url /file/taifex/Dailydownload/DailydownloadCSV/Daily_"+date_str+".zip /out Daily_"+date_str+".zip")
  20.         time.sleep(1)
  21.         a=os.system("EzTfeDL.exe /url /file/taifex/Dailydownload/OptionsDailydownloadCSV/OptionsDaily_"+date_str+".zip /out OptionsDaily_"+date_str+".zip")
  22.         time.sleep(1)
  23.         start_date=start_date+delta
  24.         count_days+=1
複製代碼


使用前先更改一下start_date的日期
就抓從start_date到今天的期貨和選擇權的資料
如果不要選擇權的資料
就把a=os.system("EzTfeDL.exe /url /file/taifex/Dailydownload/OptionsDailydownloadCSV/OptionsDaily_"+date_str+".zip /out OptionsDaily_"+date_str+".zip")
這行給刪掉就好

至於EzTfeDL.exe的bug? 沒發現@@

若是不想用EzTfeDL.exe的話
也可以稍微改一下輸出成txt檔
再把連結丟到迅雷或是IDM下載也可以
發表於 20-5-19 13:58 | 顯示全部樓層
Prochihua 發表於 19-11-24 14:35
謝謝ram大大提供的小程式
我以前是跑出一個txt檔,然後把網址丟到迅雷或是IDM下載
現在稍微改了一下

仔細瞧了瞧又回憶了許久, 果然有圖有真相

那個有礙觀瞻的bug在這裡啦!

有礙觀瞻的bug

有礙觀瞻的bug


然後我用的是 EzTwseDL 和P大的 EzTfeDL 功能差不多

只是一個預設是針對證交所 另一個則是預設針對期交所

發表於 20-7-1 22:14 | 顯示全部樓層
水啦,好東西就是推上去
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 24-12-22 18:41

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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