原文中具體闡述了Python怎樣獲得實時股票數據的方式實例,原文中根據實例編碼推薦的十分具體,對大家學習培訓或工作具有很強的參照學習培訓使用價值,必須的小伙伴們下邊伴隨著小編就來互相學習了解一下吧
怎樣獲得實時股票信息內容
股票消息的插口有許多,以前大伙兒常見的是新浪網的,但年初情況下,新浪網的插口忽然無法使用,來給大家導致了非常大的煩惱,因此在網上也有許多實例教程教你如何從新浪網讀取數據,跟隨實例教程整了大半天也沒用,干脆轉到126(其實就是網易游戲了),覺得速率都很不錯。
最先大家看看接口地址:http://api.money.126.net/data/feed/1000001,money.api
這其中的1000001便是股票號了,跟新浪網的差異,它的首位意味著交易中心,后邊6位是股票號
0:上海交易所
1:深圳交易所
2:重慶聯交所
先進行電腦瀏覽器看看算法設計:
_ntes_quote_callback({ "1000001":{ "code":"1000001", "percent":0.002113, "high":14.25, "askvol3":1026758, "askvol2":810700, "askvol5":290493, "askvol4":461100, "price":14.23, "open":14.2, "bid5":14.18, "bid4":14.19, "bid3":14.2, "bid2":14.21, "bid1":14.22, "low":14.11, "updown":0.03, "type":"SZ", "bidvol1":323600, "status":0, "bidvol3":244200, "bidvol2":673474, "symbol":"000001", "update":"2022/06/25 17:59:57", "bidvol5":343500, "bidvol4":145200, "volume":86604061, "askvol1":817268, "ask5":14.27, "ask4":14.26, "ask1":14.23, "name":"平安銀行", "ask3":14.25, "ask2":14.24, "arrow":"↑", "time":"2022/06/24 16:00:58", "yestclose":14.2, "turnover":1227798687.09 } });
可以看出_ntes_quote_callback()中的就是標準的json數據,我們只要通過正則表達式就可以取出。
我們先定義一個數據結構:
class NetTick: def __init__(self,dict={}): self.name=dict.get('name')#股票名稱 self.yestclose=dict.get('yestclose')#昨日收盤價 self.bidvol5=dict.get('bidvol5')#買5數量 self.bidvol4=dict.get('bidvol4')#買4數量 self.bidvol3=dict.get('bidvol3')#買3數量 self.bidvol2=dict.get('bidvol2')#買2數量 self.bidvol1=dict.get('bidvol1')#買1數量 self.bid5=dict.get('bid5')#買5價格 self.bid4=dict.get('bid4')#買4價格 self.bid3=dict.get('bid3')#買3價格 self.bid2=dict.get('bid2')#買2價格 self.bid1=dict.get('bid1')#買1價格 self.askvol5=dict.get('askvol5')#賣5數量 self.askvol4=dict.get('askvol4')#賣4數量 self.askvol3=dict.get('askvol3')#賣3數量 self.askvol2=dict.get('askvol2')#賣2數量 self.askvol1=dict.get('askvol1')#賣1數量 self.ask5=dict.get('ask5')#賣5價格 self.ask4=dict.get('ask4')#賣4價格 self.ask3=dict.get('ask3')#賣3價格 self.ask2=dict.get('ask2')#賣2價格 self.ask1=dict.get('ask1')#賣1價格 self.symbol=dict.get('symbol')#股票代碼第一位1:深交所0:上交所2北交所 self.volume=dict.get('volume')#成交量 self.price=dict.get('price')#當前價格 self.open=dict.get('open')#開盤價 self.low=dict.get('low')#最低價 self.high=dict.get('high')#最高價 self.code=dict.get('code')#去除標記為的股票代碼 self.turnover=dict.get('turnover')#成交額 self.percent=dict.get('percent')#漲跌幅 self.updown=dict.get('updown')#漲跌金額
通過研究,我們發現126的接口支持多個股票查詢,那我們可以定義兩個方法,一個查單個,一個查多個,具體實現如下:
import requests import re from models.nettick import NetTick from utils.packages import* class NetEaseData: staticmethod def get_realtime_data(symbol): """ 網易的實時數據接口 :param symbol:股票代碼 :return:Tick """ code=NetEaseData.convert_market(symbol) try: response=requests.get("http://api.money.126.net/data/feed/{},money.api".format(code)).text re_find=NetEaseData.__re_find(response) if re_find is not None: find_stock=re_find.get(code) if find_stock is not None: return NetTick(find_stock) except Exception as e: logger.error('請求網易接口出錯,錯誤信息:{}'.format(e)) return None staticmethod def convert_market(other_market_code=str): """ 轉換通用股票代碼sz sh bj開頭+股票代碼 """ if other_market_code[0:2].lower()=='sh': return'0'+other_market_code[2:] elif other_market_code[0:2].lower()=='sz': return'1'+other_market_code[2:] else: return'2'+other_market_code[2:] staticmethod def get_realtime_datas(symbols=[]): """ 網易的實時數據接口 :param symbols:股票代碼列表 :return:Ticks列表 """ codes=[NetEaseData.convert_market(code)for code in symbols] result=[] try: response=requests.get("http://api.money.126.net/data/feed/{},money.api".format(','.join(codes))).text re_find=NetEaseData.__re_find(response) if re_find is not None: for code in re_find: item=re_find[code] result.append(NetTick(item)) except Exception as e: logger.error('請求網易接口出錯,錯誤信息:{}'.format(e)) return result staticmethod def __re_find(response): find=re.findall(r"_ntes_quote_callback((.*));",response) if len(find)>=1: return to_obj(find[-1]) return None if __name__=='__main__': ticks=NetEaseData.get_realtime_datas(['sh588000','sz000001','bj831010']) [print(tick.symbol,tick.name,tick.price)for tick in ticks] tick=NetEaseData.get_realtime_data('sz127045') print(tick.symbol,tick.name,tick.price)
使用也非常簡單
NetEaseData.get_realtime_data:獲取單個股票
NetEaseData.get_realtime_datas:獲取多個股票數據
這里我股票代碼用的是兼容原有新浪模式的,你可以自己做下修改。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/129083.html
摘要:如果我們把這三個因子都加進去會怎樣呢收益率為倍,沒有剛才那么好了,還是剛才的和凈利潤環比增長率這兩個因子比較好,那就保留兩個吧。因此,我們可以考慮使用排名的方法,對這些因子進行排名。 導語:每一位寬客都相信,影響股票漲跌的因素不勝枚舉,而這些因素就是因子!本文作為一篇合格的入門教程,提供代碼當做框架,各路寬客可以自己測試,查看收益率,亦可利用聚寬python平臺自行構建代碼。 規范源碼...
摘要:選取方法打開網頁,查看源代碼,搜索網頁的股票價格數據是否存在于源代碼中。將上述的代碼封裝成一個函數,對東方財富網頁面解析的完整代碼如下所示接下來是獲得百度股票網鏈接描述單只股票的信息。 功能簡介 目標: 獲取上交所和深交所所有股票的名稱和交易信息。輸出: 保存到文件中。技術路線: requests---bs4--re語言:python3.5 說明 網站選擇原則: 股票信息靜態存在于ht...
摘要:貪心算法每一步必須滿足一下條件可行的即它必須滿足問題的約束。四題目分析貪心算法,總是做出在當前看來是最好的選擇,不從整體最優上加以考慮,也就是說,只關心當前最優解,按照貪心策略,不關心以后,我們只關心當前利益。 一、寫在前面 為什么要在LeetCode刷題?大家都知道不管是校招還是社招算法題是必考題,而這一部分恰巧是大多數人的短板,所以刷題首先是為了提高自身的編程能力,能夠在算法面試中...
摘要:將另存為格式時,文件將工作表中的單元格所顯示的文本和數值以逗號分離進行保存。方法此處使用模塊的函數讀取文件,函數以字典形式返回,字典的鍵則是這個單元格的標題即列頭,每一個單元格內容放在字典的值內。 前言 數據是進行量化交易的基礎和關鍵,目前國內做量化產品的金融機構大部分是從券商獲取高頻實時行情數據的,另外很多金融網站也提供了數據接口,可以調用接口方式獲取,也可以用爬蟲的方式獲取。文本講...
閱讀 918·2023-01-14 11:38
閱讀 890·2023-01-14 11:04
閱讀 749·2023-01-14 10:48
閱讀 2030·2023-01-14 10:34
閱讀 955·2023-01-14 10:24
閱讀 830·2023-01-14 10:18
閱讀 505·2023-01-14 10:09
閱讀 582·2023-01-14 10:02