返回列表 上一主題 發帖

python 融資融券彙總 (全部)"資料

其實你提到的 :
"目前的想法是   python 抓取資料至 sqlite3,vba 從 sqlite3 取出資料"
在實務上這種 ...
c_c_lai 發表於 2016-9-30 15:22


原來如此,小弟是看長期月線的,所以是要統計歷史資料沒有錯
線上即時作業 小弟沒辨法,原來是操作手法的不同

故,泥用python取出sql內的表格,只是單純要畫圖?
印像中   台灣的 線上即時作業 都是用 excel (國外聽說改掉了)
用vba才可以即時互動   python應該還不行~~不過也不一定,說不定多google  就有高手作出來了呢

ps:咳咳~~大家上班不上班的在聊這個,哈哈哈

TOP

回復 49# c_c_lai


   你執行的情況,真的很奇怪!我執行了3次從2016/1/1到2016/9/29 也都沒有得到像你一樣的結果
你再把資料庫刪掉,觀察第一次是不是會不完整,從2016/1/1到2016/9/29共有170筆資料,看是不是會不夠
我程式裡面,只有插入INSERT INTO...並沒有修改的語句而且當有重覆值時,並不會執行任何動作
except Exception as e:
            pass
再麻煩你了

TOP

由於 sqlite3 在日期時間 是以文字串存入,而非以日期時間格式存入(如:#2016/01/06#)
而sqlite3的date函數的日期格式必須像'2016-01-06'年月日需以'-'隔開 ,若以'2016/01/06' 斜線 '/'隔開,以SQL語法會無法計算
所以在存入sqlite3資料庫的日期,必須先處理

在 dd=dat.strftime('%Y/%m/%d')的下行需加入另一句
sqldate=dat.strftime('%Y-%m-%d')

而這句add_data(regs=re,date=dd)必須修改為
add_data(regs=re,date=sqldate)

在以後的日期處理,就會容易處理了

sqlite3在日期查詢方面,例如說要查詢 '2016-01-01' 到 '2016-01-31'
在SQL語法方面 原來的用法 WHERE 日期 BETWEEN '2016-01-01' AND '2016-01-31'
而sqlite3 卻不能以 BETWEEN 去處理,就像前面說的,日期時間 是以文字串存入,文字串不能用在日期時間處理

所以sqlite3的SQL語法為
"select * from [0050] where julianday(日期)>=julianday('2016-01-01') and julianday(日期)<=julianday('2016-01-31')"

TOP

回復 52# lpk187
我的是 179 Records。
A0B.png
2016-9-30 17:00

TOP

太棒了!  謝謝大大的分享~~

TOP

請問各位大大,最近不想從證交所抓資料,改向鉅亨網,不過在網頁解析上沒經驗(之前是請教別人後,再依樣劃葫蘆慢慢改出自已想要的)
原程式部份檔如附件,

  若改由鉅亨網下載資料的話,從網路上看文章,其中改成以下,不過好像沒辦法送出查詢,想請教是哪裡出問題??
          = "    cnyes.com/twstock/ps_historyprice/" + (cell21)+".htm"
    classSelectTextStart = (str(yy-1)+"/"+str(mm)+"/"+str(dd))
    classSelectTextEND = (str(yy)+"/"+str(mm)+"/"+str(dd))
  
    browser.find_element_by_id("ctl00_ContentPlaceHolder1_startText").send_keys(classSelectTextStart)
    browser .find_element_by_id("ctl00_ContentPlaceHolder1_endText").send_keys(classSelectTextEND)
    browser.find_element_by_id("ctl00_ContentPlaceHolder1_submitBut").send_keys(Keys.ENTER)
    time.sleep(10)

原始檔.tar (4.5 KB)

TOP

        靜思自在 : 口說好話、心想好意、身行好事。
返回列表 上一主題