[分享] 使用R抓取證交所股價資料

看板R_Language作者 (Poincarérecurrence)時間6年前 (2017/07/22 14:40), 6年前編輯推噓7(700)
留言7則, 5人參與, 最新討論串1/1
因為有網友來信問到如何使用 R 抓取證交所網站股價資料 我就把簡單的作法,貼在這裡,讓有需要的網友參考。 (其實我本身是習慣使用 python 抓資料的) 原則上證交所有非常多種資料,資料的抓取方式都大同小異, 因為證交所前一陣子把資料都改成 json 格式,非常好抓。 大家可以依照自己需求,改一下參數,抓取想要的資料。 這裡我抓取特定日期,上市所有股票的交易資訊。 # http://www.tse.com.tw/zh/page/trading/exchange/MI_INDEX.html # 全部(不含權証 牛熊證 ....etc) library(jsonlite) qdate <- '20170721' #要抓取的日期 qtype <- 'ALLBUT0999' #全部(不含權証 牛熊證 ....etc) ttime <- as.character(as.integer(as.POSIXct(Sys.time()))*100) url <- paste0('http://www.twse.com.tw/exchangeReport/MI_INDEX?', 'response=json&date=',qdate,'&type=',qtype,'&_=',ttime) x <- fromJSON(url,flatten=T) x$data5 個股資料都在 x$data5,有需求者依照自己要的清理一下資料, 例如存成csv,或存進資料庫,寫成自動程式等,這部份就請自行 處理。如果只想抓取特定股票例如台積電 2330,請研究一下 網站,抓取方式類似。 另外上櫃股票的網站抓取方式類似,也都是 json 格式資料。 :p 補上 python3 的程式碼 import time import requests qdate = '20170721' qtype = 'ALLBUT0999' ttime = str(int(time.time()*100)) url = 'http://www.twse.com.tw/exchangeReport/MI_INDEX? response=json&date={}&type={}&_={}'.format(qdate,qtype,ttime) page = requests.get(url) x = page.json() 資料都在 x['data5'] -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 104.155.222.243 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1500705634.A.F7B.html

07/22 15:54, , 1F
推推
07/22 15:54, 1F

07/22 16:19, , 2F
Python會比較好抓資料嗎?看過很多爬蟲都是用Python
07/22 16:19, 2F
我對 R 的資料型態老是搞不清楚,所以比較喜歡使用 python XD 上面補上對應的 python 碼

07/22 16:26, , 3F
好抓程度一樣 看你喜歡哪種語法
07/22 16:26, 3F
※ 編輯: bluecadence (104.155.222.243), 07/22/2017 16:54:00

07/22 17:26, , 4F
讚嘆(跪讀
07/22 17:26, 4F
※ 編輯: bluecadence (104.155.222.243), 07/22/2017 19:08:06

07/22 21:37, , 5F
感謝 改天來試試 大大有github嗎? 想參考看看
07/22 21:37, 5F

07/23 12:39, , 6F
感謝分享
07/23 12:39, 6F

09/22 00:00, , 7F
大推
09/22 00:00, 7F
文章代碼(AID): #1PSlDYzx (R_Language)