|
本帖最後由 Sirius 於 15-11-21 15:24 編輯
Python語言基礎請參考一下「Python教學資源」
以下說明日期字串的產生方式與迴圈
以下是粗略的代碼,請自行調整成你所要的
假設先指定開始與結束日期字串:
我習慣用西元,在後面會轉成民國年- date_s = '20150801'
- date_e = '20150831'
複製代碼 轉換成日期型別:- from datetime import date, timedelta
- from time import sleep
- date_s = date(int(date_start[:4]), int(date_start[4:6]), int(date_start[6:8]))
- date_e = date(int(date_end[:4]), int(date_end[4:6]), int(date_end[6:8]))
複製代碼 開始日期與結束日期間的迴圈:- while date_s <= date_e:
- yyyy = date_s.strftime('%Y')
- mm = date_s.strftime('%m')
- dd = date_s.strftime('%d')
- # 產生民國“年/月/日”字串
- twymd = '{}/{}/{}'.format(int(yyyy) - 1911, mm, dd)
- data = {'download': 'csv', 'qdate': twymd, 'selectType': 'ALLBUT0999'}
- # 下載資料,這裡省略。
- # 暫停一秒
- sleep(1)
- # 把日期加一日
- date_s = date_s + timedelta(days=1)
複製代碼 迴圈內請記得稍暫停一下,暫停時間也可用像0.5秒的時間,總之別忘記這點
不然可能會造成網站的瞬間大流量與負荷
我之前曾觀察過迴圈內不暫停持續下載大量資料的結果,在幾秒間就下載幾百MB流量
雖然對下載的人而言是很爽,但對於網站而言可能是災難
尤其剛好有多人同時同樣幹這種事時,簡單說,有點像網路恐佈攻擊
所以記得暫停一下,免得哪天大家都不能用的時候那就好玩了
另外,自己會有個檔案記錄交易所的營業日
我自己的程式會讀取這個檔案,不會去抓非營業日的資料,可避免不必要的網路擷取動作
今天為這問題也花了我不少小時的時間,希望以上能解答這位朋友的問題 |
|