證券交易所下載改為https
證券交易所下載改為https, 例如https://www.twse.com.tw/exchangeReport/MI_5MINS_INDEX?response=csv&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")
這樣就可以正常下載
要Imports這兩項
Imports System.Net.Security
Imports System.Security.Cryptography.X509Certificates
這個的話有在網路上找到小程式可以用{:4_90:}
感覺還蠻方便的,直接執行程式有參數說明
依說明看,下載當日的資料可以簡化,確實就順利下載到檔案了
然後可以用批次檔來設計判斷是否有下載,寫了測試 5MINS.BAT
@echo off
echo %DATE% %TIME%
EzTwseDL ""
if errorlevel 2 goto :DownloadOK
if errorlevel 1 goto :DownloadFaild
goto :EndBat
:DownloadOK
echo Download OK.
goto :EndBat
:DownloadOKFaild
echo Download Faild!
goto :EndBat
:EndBat
執行批次檔就會像這樣
我是在乾淨Win7上面試的,想說也到XP試試看,結果是
所以看起來是交易所把TLS1.0的支援給關閉了
不然應該也是可以用吧!
我下載到的工具程式和上面的的批次檔大家也可以試試看
寫程式呼叫的話也是變得很簡單{:4_209:}
不過這程式有個bug耶! 但只是有礙觀瞻不影響功能
看看有沒有人也像我一樣會發現這問題{:4_186:}
本帖最後由 Prochihua 於 19-11-24 14:36 編輯
謝謝ram大大提供的小程式
我以前是跑出一個txt檔,然後把網址丟到迅雷或是IDM下載
現在稍微改了一下
把以下的程式碼存成python的,然後跟EzTfeDL.exe放在一起再執行就好
import os
import datetime
import time
#取得現在的日期
now=datetime.datetime.now()
#設定開始的日期
start_date_str="2019-11-15"
start_date=datetime.datetime.strptime(start_date_str,'%Y-%m-%d')
#計算相差幾天
days=now-start_date
days=days.days
delta=datetime.timedelta(days=1)
count_days=1
while(count_days<=days+1):
date_str=start_date.strftime("%Y_%m_%d")
print(date_str)
#使用EzTfeDL下載期貨和選擇權的資料
a=os.system("EzTfeDL.exe /url /file/taifex/Dailydownload/DailydownloadCSV/Daily_"+date_str+".zip /out Daily_"+date_str+".zip")
time.sleep(1)
a=os.system("EzTfeDL.exe /url /file/taifex/Dailydownload/OptionsDailydownloadCSV/OptionsDaily_"+date_str+".zip /out OptionsDaily_"+date_str+".zip")
time.sleep(1)
start_date=start_date+delta
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下載也可以
Prochihua 發表於 19-11-24 14:35
謝謝ram大大提供的小程式
我以前是跑出一個txt檔,然後把網址丟到迅雷或是IDM下載
現在稍微改了一下
仔細瞧了瞧又回憶了許久, 果然有圖有真相
那個有礙觀瞻的bug在這裡啦!
然後我用的是 EzTwseDL 和P大的 EzTfeDL 功能差不多{:4_163:}
只是一個預設是針對證交所 另一個則是預設針對期交所
水啦,好東西就是推上去
頁:
[1]