<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
股票資訊的介面有很多,之前大家常用的是新浪的,但在年初的時候,新浪的介面突然不能使用,給大家造成了很大的困擾,為此網上也有很多教學教大家如何從新浪獲取資料,跟著教學弄了半天也不行,索性換到126(也就是網易了),感覺速度都還不錯。
首先我們看下介面地址:http://api.money.126.net/data/feed/1000001,money.api
其中的1000001
就是股票程式碼了,跟新浪的不同,他的第一位代表交易所,後面6位是股票程式碼
先通過瀏覽器看下資料結構:
_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
: 獲取多個股票資料這裡我股票程式碼用的是相容原有新浪模式的,你可以自己做下修改。
到此這篇關於Python如何獲取實時股票資訊的方法範例的文章就介紹到這了,更多相關Python獲取實時股票資訊內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45