如何獲取實時的股票數據?
最近在學習Python語言,剛好也想學學炒股,因此學習了一些基礎知識後,打算做一些股票相關的demo練手,第一個要解決的問題當然是數據採集。
翻遍了網路,看了一些朋友的代碼片段(尤其感謝tushare的作者),知道了向API請求數據的格式大概是這樣的:http://api.finance.ifeng.com/akdaily/?code=sh601989type=last其中的akdaily表示日k線,sh601989則是股票代碼,向埠發出請求後會返回股票的所有歷史數據。因為不會以關鍵詞高亮的模式寫代碼,請自帶IDE觀看,原代碼如下:
const.py
# -*- coding: utf-8 -*-
"""功能: 放置常量,列表 Created on Thu Jul 23 09:17:27 2015@author: jet"""DAY_PRICE_COLS = ["date", "open", "high", "close", "low", "volume","chg", "%chg", "ma5", "ma10", "ma20",
"vma5", "vma10", "vma20", "turnover"]DAY_PRICE_URL = "%sapi.finance.%s/%s/?code=%stype=last"INDEX_KEY = ["SH", "SZ", "HS300", "SZ50", "GEB", "SMEB"]INDEX_LIST = {"SH": "sh000001", "SZ": "sz399001", "HS300": "sz399300", "SZ50": "sh000016", "GEB": "sz399006", "SMEB": "sz399005"}INDEX_DAY_PRICE_COLS= ["date", "open", "high", "close", "low", "volume", "chg", "%chg", "ma5", "ma10", "ma20", "vma5", "vma10", "vma20"] K_TYPE_KEY = ["D", "W", "M"]K_TYPE_MIN_KEY = ["5", "15", "30", "60"]
K_TYPE = {"D": "akdaily", "W": "akweekly", "M": "akmonthly"}MIN_PRICE_URL = "%sapi.finance.%s/akmin?scode=%stype=%s" PAGE_TYPE = {"http": "http://", "ftp": "ftp://"}PAGE_DOMAIN = {"sina": "sina.com.cn", "ifeng": "ifeng.com"}URL_ERROR_MSG = "獲取失敗,請檢查網路狀態,或者API埠URL已經不匹配!"get_hist_data.py
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 23 09:15:40 2015@author: jet"""import const as ctimport pandas as pdimport jsonfrom urllib2 import urlopen,Requestdef get_hist_data(code = None, start = None, end = None, ktype = "D"):"""
功能: 獲取個股歷史交易數據 -------- 輸入: -------- code:string 股票代碼 比如:601989 start:string 開始日期 格式:YYYY-MM-DD 為空時取到API所提供的最早日期數據end:string
結束日期 格式:YYYY-MM-DD 為空時取到最近一個交易日數據 ktype:string(default=D, 函數內部自動統一為大寫) 數據類型 D=日K線,W=周K線,M=月K線,5=5分鐘,15=15分鐘 30=30分鐘,60=60分鐘 輸出: -------- DataFrame date 日期 open 開盤價high 最高價
close 收盤價 low 最低價 chg 漲跌額 p_chg 漲跌幅 ma5 5日均價 ma10 10日均價 ma20 20日均價 vma5 5日均量 vma10 10日均量vma20 20日均量
turnover換手率(指數無此項) """ code = code_to_APIcode(code.upper()) ktype = ktype.upper() url = "" url = get_url(ktype, code) print(url) js = json.loads(ping_API(url)) cols = [] if len(js["record"][0]) == 14: cols = ct.INDEX_DAY_PRICE_COLS else: cols = ct.DAY_PRICE_COLS df = pd.DataFrame(js["record"], columns=cols) if ktype in ct.K_TYPE_KEY: df = df.applymap(lambda x:x.replace(u",", u"")) for col in cols[1:]: df[col]=df[col].astype(float) if start is not None: df = df [df.date &>= start] if end is not None: df = df[df.date &<= end] df = df.set_index("date") return df def code_to_APIcode(code): """ 功能: 驗證輸入的股票代碼是否正確,若正確則返回API對應使用的股票代碼 """ print(code) if code in ct.INDEX_KEY: return ct.INDEX_LIST[code] else: if len(code) != 6: raise IOError("code input error!") else: return "sh%s"%code if code[:1] in ["5", "6"] else "sz%s"%codedef get_url(ktype, code): """ 功能: 驗證輸入的K線類型是否正確,若正確則返回url """ if ktype in ct.K_TYPE_KEY: url = ct.DAY_PRICE_URL % (ct.PAGE_TYPE["http"], ct.PAGE_DOMAIN["ifeng"], ct.K_TYPE[ktype], code) return url elif ktype in ct.K_TYPE_MIN_KEY: url = ct.MIN_PRICE_URL % (ct.PAGE_TYPE["http"], ct.PAGE_DOMAIN["ifeng"], code, ktype) return url else: raise IOError("ktype input error!")def ping_API(url): """ 功能: 向API發送數據請求,若鏈接正常返回數據 """ text = "" try: req = Request(url) text = urlopen(req,timeout=10).read() if len(text) &< 15: raise IOError("no data!") except Exception as e: print(e) else: return text#測試入口print(get_hist_data("601989","2015-07-11","2015-07-22"))/*---------------更新於2016.07.07----------------*/
發現一個"實時數據"獲取方法 新浪SAE
感謝TuShare,http://tushare.org
rcurl抓取問財財經搜索網頁股票數據
問財財經搜索是同花順旗下的服務之一,主要針對上市公司的公告、研報、即時新聞等提供搜索及參考資料。相對於其他股票軟體來說,一個強大之處在於用自然語言就可以按你指定的條件進行篩選。而大部分現有的行情軟體支持的都不是很好,寫起來就費盡心思,還不一定能行。
然而問財有一個缺陷在於它只能獲取一天的股票相關信息。如果,我們希望實現抓取一段時間的股票歷史信息,就要通過網頁批量抓取。
事實上,我們可以通過製作一個爬蟲軟體來自己定義時間日期和搜索的關鍵詞,並且批量下載一定日期範圍的數據。
我們以抓取每天的收盤價大於均線上股票數目為例子,用r來實現抓取:
例如需要獲取10月12日的數據,在問財里輸入下面的關鍵詞即可
查看搜索結果鏈接,我們可以看到關鍵詞在鏈接中的顯示規則
因此,我們在r中可以通過製作一個時間段的偽鏈接來向伺服器不斷發送搜索請求,從而實現一段日期數據的批量抓取
url=paste("股票 - 問財財經搜索",as.character(as.Date(i, origin = "1970-01-01")) ,input2)
然後,我們查看其中一天的網頁源代碼,可以找到對應股票數據的xml源碼
因此,可以通過編寫一個html_value 函數來獲取這個xmlValue
xpath &<- "//div[@class="natl_words long_words"]/span[@class="natl_num"]"
html_value &<- function(url,xpath){
webpage &<- getURL(url)
webpage &<- readLines(tc &<- textConnection(webpage)); close(tc)
pagetree &<- htmlTreeParse(webpage, error=function(...){}, useInternalNodes = TRUE)
value &<- getNodeSet(pagetree,xpath)
##i &<- length(value)##統計滿足條件的值個數,一般情況為1
# value1 &<- xmlValue(value[[ 1]])
# value2 &<- xmlValue(value[[ 2]])
# value3 &<- xmlValue(value[[ 3]])
# value4 &<- xmlValue(value[[ 4]])
value1=character(0)
for(i in 1:length(value))value1[i] &<- xmlValue(value[[ i]])
return(value1)
}
然後封裝成一個函數,就可以任意下載一段時間內幾個關鍵詞所對應的股票數據了。
最後可以將爬取到的數據批量輸出到一個excel文件中,從而方便後續的分析。
文章寫得一般,大家見諒!有問題歡迎共同探討交流!
http://y0.cn/bigdata (二維碼自動識別)
rcurl抓取問財財經搜索網頁股票數據
用得著這麼麻煩嗎!一個EXCEL搞定
http://wk.baidu.com/view/aed699ceb9d528ea81c779e2?pcf=2#2拿去不謝好吧
果斷上圖就是這樣 @周郎平5行代碼就可以實現1秒以內獲取一次所有股票的實時分筆數據
import tushare as ts
import pandas as pdimport datetimef=open("F:get_stocksget_datastocks.txt")time1=datetime.datetime.now()stocks=[line.strip() for line in f.readlines()]data1=ts.get_realtime_quotes(stocks[0:880])data2=ts.get_realtime_quotes(stocks[880:1760])data3=ts.get_realtime_quotes(stocks[1760:2640])data4=ts.get_realtime_quotes(stocks[2640:-1])time2=datetime.datetime.now()print("開始時間:"+str(time1))print("結束時間:"+str(time2))print(data1)print(data2)print(data3)print(data4)開始時間:2017-12-04 21:42:27.184003
結束時間:2017-12-04 21:42:27.696398可以關注微信公號【數據之佳】得到更對關於量化分析數據獲取,模型,結果的文章
大神:你好!
正在學習Python,借用你的程序,結束日期輸入當前值(2017-10-26),但數據只能到2017-5-26,就是只能獲取到5個月之前的數據,不知什麼原因,謝謝指導!
上面已經提到tushare,不說了
除此之外其他的量化平台其實也都可以,百度一下能出來一些,現在挺火的api數據平台上通常都有這種介面,一般都要收費,但比老牌的財經軟體應該是便宜不少,幾個典型的:聚合、阿凡達、haoservice、通聯(裡面還有幾家金融數據商)、數糧
另外最正宗的方法,如果你有實力通過審核+有錢,直接接入證券交易所(可以從網站上了解情況,或者每個交易所都有信息授權商,那裡也可以)親,你好做股票投資的話我認為股票數據查詢肯定是必不可少的環節,我們長睦推出了一個分析師密集調研報告推送,通過數據統計來準確估算各大分析師所關注的股票證券從而得到精確的結果來判斷行市的走向來獲取優選股為投資者帶來更為保障的信息提供。詳情請關注長睦「數學院」官方微信號:cmshuxueyuan
多多交流
以下是3月27日分析師密集調研智能分析報告 :長睦諸葛投研: 3月27日分析師密集調研智能分析報告 謝謝。
長睦觀點:大數據行業趨勢
作者:wfnmgglpf
鏈接:https://www.zhihu.com/question/36428117/answer/154060313
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
數據 - JoinQuant數據獲取,整理,分析,投資策略編輯一站式體驗。還免費。數據可以下載的。
A jet ,您好! 希望能和您交流一下 股票數據實時獲取方面的問題,我已經給您發了消息。
wind諮詢
我做了一個股票軟體 可以提供c++版的股票介面 就看你出價了
推薦閱讀:
※什麼是次貸?次貸危機又是怎麼導致的?
※國際上權威的金融類期刊有那些?
※石油價格未來會反彈暴漲,還是持續下跌?
※華融資產管理公司是幹嘛的 能否具體介紹一下?
※金融學自學 課程的學習順序 及書籍推薦 ?