资讯专栏INFORMATION COLUMN

Python怎样获得实时股票数据的方式实例

89542767 / 830人阅读

  原文中具体阐述了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:获取多个股票数据


  这里我股票代码用的是兼容原有新浪模式的,你可以自己做下修改。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129083.html

相关文章

  • python做投资--多因子策略

    摘要:如果我们把这三个因子都加进去会怎样呢收益率为倍,没有刚才那么好了,还是刚才的和净利润环比增长率这两个因子比较好,那就保留两个吧。因此,我们可以考虑使用排名的方法,对这些因子进行排名。 导语:每一位宽客都相信,影响股票涨跌的因素不胜枚举,而这些因素就是因子!本文作为一篇合格的入门教程,提供代码当做框架,各路宽客可以自己测试,查看收益率,亦可利用聚宽python平台自行构建代码。 规范源码...

    zilu 评论0 收藏0
  • python爬虫实战二——股票数据定向爬虫

    摘要:选取方法打开网页,查看源代码,搜索网页的股票价格数据是否存在于源代码中。将上述的代码封装成一个函数,对东方财富网页面解析的完整代码如下所示接下来是获得百度股票网链接描述单只股票的信息。 功能简介 目标: 获取上交所和深交所所有股票的名称和交易信息。输出: 保存到文件中。技术路线: requests---bs4--re语言:python3.5 说明 网站选择原则: 股票信息静态存在于ht...

    icattlecoder 评论0 收藏0
  • 【LeetCode】贪心算法--买卖股票最佳时机 II(122)

    摘要:贪心算法每一步必须满足一下条件可行的即它必须满足问题的约束。四题目分析贪心算法,总是做出在当前看来是最好的选择,不从整体最优上加以考虑,也就是说,只关心当前最优解,按照贪心策略,不关心以后,我们只关心当前利益。 一、写在前面 为什么要在LeetCode刷题?大家都知道不管是校招还是社招算法题是必考题,而这一部分恰巧是大多数人的短板,所以刷题首先是为了提高自身的编程能力,能够在算法面试中...

    xbynet 评论0 收藏0
  • 量化交易之股票数据获取——同花顺软件

    摘要:将另存为格式时,文件将工作表中的单元格所显示的文本和数值以逗号分离进行保存。方法此处使用模块的函数读取文件,函数以字典形式返回,字典的键则是这个单元格的标题即列头,每一个单元格内容放在字典的值内。 前言 数据是进行量化交易的基础和关键,目前国内做量化产品的金融机构大部分是从券商获取高频实时行情数据的,另外很多金融网站也提供了数据接口,可以调用接口方式获取,也可以用爬虫的方式获取。文本讲...

    Chaz 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<