实时获取股票数据,免费!——Python爬虫Sina Stock实战
数量技术宅团队在CSDN学院推出了量化投资系列课程
欢迎有兴趣系统学习量化投资的同学,点击下方链接报名:
量化投资速成营(入门课程)
Python股票量化投资
Python期货量化投资
Python数字货币量化投资
C++语言CTP期货交易系统开发
数字货币JavaScript语言量化交易系统开发
实时股票数据的重要性
对于四大可交易资产:股票、期货、期权、数字货币来说,期货、期权、数字货币,可以从交易所提供的api收到实时行情数据,而股票由于量化交易接口不面向普通人开放,导致大家想要获取到股票的实时数据,十分困难。而与此同时,股票实时数据,又是极其重要的场内交易数据。
对于手动交易者而言,实时数据一方面可以辅助盯盘,另一方面,可以用程序简单开发到价提醒,到某个价位,进行入场和出场的交易。
对于量化交易者,实时行情就更加重要了。我们接收实时行情之后,不仅需要用实时数据计算策略信号,而且当策略信号需要对某个股票进行下单的时候,我们也需要知道该股票的最新价格、盘口数据,从而根据价格+盘口,选择合适的价位下单。此外,实时数据落地后,还可以为我们的策略回测服务。
爬虫最通俗原理解释
爬虫,相当于模仿了网页查询的动作,比如我们在浏览器中输入了www.baidu.com,浏览器向我们返回百度的主页,其实这就是一个请求+返回的过程。我们请求的是地址,返回的是数据(尽管我们看到的是百度主页,其实背后对应的还是一些列的数据,只不过后续的可视化展示成了网页)。
对于请求股票数据来说,也是同理。比如我们请求某一只股票的数据(以600000浦发银行为例),在浏览器地址中输入:http://hq.sinajs.cn/list=sh600000,股票代码可任意修改,浏览器返回如下数据集并显示:
当然同时查询多只股票,也是可以做到的,我们同样在浏览器中输入地址,例如:http://hq.sinajs.cn/list=sh600000,sz000001,sz000002,就同时查询到了浦发银行、平安银行、万科A的数据。
那么,对于Python来说,我们如何使用Python来模仿网页查询的动作?这里必须要借助一个Python的三方库:request库。
requests是使用Apache2 licensed 许可证的HTTP库。Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。可以说,requests在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举的完成浏览器可有的任何操作。与此同时,requests会自动实现持久连接keep-alive。
requests库的上述优点,加上其使用的便捷性,使得其成为Python爬虫的首选工具。我们通过requests,来重复一遍上述网页的查询过程,步骤也很简单,首先查询单个股票,返回如下
再次查询多个股票,返回如下,可以看到,用requests进行查询所返回的结果,与我们网页上看到的是完全一致的,这也说明requests完美的模拟了浏览器的请求动作。
Python爬虫Sina Stock实战
第一步,Sina API + Requests库调用核心函数
通过调用Sina Stock API,实时查询股票价格。我们采用多股票查询,使用requests请求接口。
核心函数逻辑:code传入股票代码,调用requests库进行查询,并解析查询结果,得到我们想要查询的股票最新价格、当日涨跌幅、昨收盘价等关键字段
第二步,通过threading多线程同时查询结果、通过Queue实现线程池
我们简要介绍一下threading和Queue。threading模块中包含了关于线程操作的丰富功能,包括:常用线程函数,线程对象,锁对象,递归锁对象,事件对象,条件变量对象,信号量对象,定时器对象,栅栏对象。threading.Thread:线程对象,重要方法,start():开启线程活动。它将使得run()方法在一个独立的控制线程中被调用,需要注意的是同一个线程对象的start()方法只能被调用一次,如果调用多次,则会报RuntimeError错误。run():此方法代表线程活动。
Python的Queue模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue。这些队列都实现了锁原语,能够在多线程中直接使用。可以使用队列来实现线程间的同步。Queue.put(item) 写入队列;Queue.get([block[, timeout]])获取队列
第三步,模块化实现:Worker类 & Stock类
Worker类,主要实现功能:
传入线程实例对象,调用init、start方法,重载run函数
work_queue存放要查询的队列,依次取出(FIFO),查询结果存到result_queue队列,当队列满,取出结果队列中所有查询结果,并打印
Stock类,主要实现功能:
初始化生产者、消费者队列,生产者队列为空,消费者队列最大数量是查询的股票数量
按预设的线程数据,初始化线程池,绑定Worker类
对于每次每只要查询的股票,加入生产者队列
定义爬虫获取数据的函数
最后,我们调用Worker类和Stock类,就能得到想要获取的结果了。
运行结果展示
程序不仅可以获取个股数据,也能够获取指数数据,我们默认订阅了上证指数、深圳综指、万科A、浦发银行,4个数据流,以下是默认运行结果的展示,我们打印了最新价、涨跌幅、昨收价等关键数据。我们按照一定的时间间隔,获取数据并打印。
程序的扩展:在主程序入口,可修改查询的股票数量,我们支持多股票同时查询;查询的时间间隔、查询的线程数量的修改。
当然,我们也可以对该爬虫程序做后续的进一步拓展,比如计算量化策略信号,落地数据作为回测数据,等等。
如果你想要获取这个Python爬虫Sina Stock程序,欢迎扫码添加数量技术宅个人微信,领取完整代码。
想要获取本次分享的完整代码,或是任何关于数据分析、量化投资的问题,欢迎添加技术宅微信:sljsz01,一起交流
往期干货分享推荐阅读
数字货币稳定币对网格做市策略
万物皆可秒——淘宝秒杀Python脚本,扫货618,备战双11!
数字货币资金费策略
数字货币无风险收益率又双叒叕扩大了!
分享一个年化15%以上的无风险套利机会
【数量技术宅|交易系统开发系列分享】网格交易系统开发
通过深度学习股价截面数据分析和预测股票价格
剖析一个数字货币高频策略
数字货币交易信号实时预警推送(含群聊)
Omega System Trading and Development Club内部分享策略Easylanguage源码
量化交易如何选择云服务器,如何在本地远程开发与调试云服务器程序
一个真实数据集的完整机器学习解决方案(下)
一个真实数据集的完整机器学习解决方案(上)
如何使用交易开拓者(TB)开发数字货币策略
股指期货高频数据机器学习预测
如何使用TradingView(TV)回测数字货币交易策略
如何投资股票型基金?什么时间买?买什么?
【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略
AMA指标原作者Perry Kaufman 100+套交易策略源码分享
【 数量技术宅 | 期权系列分享】期权策略的“独孤九剑”
如何获取免费的数字货币历史数据
【数量技术宅|金融数据分析系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单
【数量技术宅|量化投资策略系列分享】成熟交易者期货持仓跟随策略
【数量技术宅|量化投资策略系列分享】多周期共振交易策略
【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数
大宗商品现货数据不好拿?商品季节性难跟踪?技术宅带你Python爬虫一键解决没烦恼
【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品
【数量技术宅|量化投资策略系列分享】股指期货IF分钟波动率统计策略
【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫
实时获取股票数据,免费!——Python爬虫Sina Stock实战相关推荐
- 构建股票量化数据库一.实时获取股票数据
实时获取股票数据 (1)实现步骤 1.通过网络爬虫–>爬取所需要的数据->股票实时价,最高价,最低价等等 2.通过python的->pandas库->进行数据整理清洗 (2)实 ...
- 实时获取股票数据的android app应用程序源码分享
From:http://www.jb51.net/article/72449.htm 本文我们分享一个实时获取股票数据的android app应用程序源码分享,可以作为学习使用,本文贴出部分重要代码, ...
- 一个实时获取股票数据的安卓应用程序
关键字:Stock,股票,安卓,Android Studio. OS:Windows 10. 最近学习Android应用开发,不知道写一个什么样的程序来练练手,正好最近股票很火,就一个App来实时获取 ...
- Python量化交易实战-10实时获取股票的数据函数封装
B站配套视频教程观看 实时获取股票的数据函数封装 实现股票数据获取的模块及方法 从这节课开始 我们就开始构建所谓的量化交易系统,量化交易平台功能模块. 上面是量化交易系统的功能模块图,主要分为3块,第 ...
- 雅虎财经数据python 网络爬虫stock股票 用 Python 通过雅虎财经获取股票数据
yfinance Python Tutorial (2022) - Analyzing Alpha https://www.youtube.com/watch?v=SxIwqdedomg 讲的很详 ...
- matlab python 股票,股票行情数据获取-Python获取股票数据?
Python获取股票数据? 这里推荐一个包―tushare,tushare是一个免费.开源的python财经数据接口包.主要实现了从数据采集.清洗加工到数据存储过程,能够为金融分析人员提供快速.整洁的 ...
- Python量化入门系列:获取数据-Tushare获取股票数据(1)
做量化用到的数据一般包括二级市场各种数据.宏观经济各种数据以及一些特殊需求的网页数据,需要有通过python获取数据.常见的获取数据方式有三种: 一是通过SQL语言从数据库获取数据,适用于二级市场和宏 ...
- Python用tushare库获取股票数据批量存入mysql成功
之前用了很多方法无法批量存入mysql中,现在这个方法可以了 首先你需要安装tushare,现在最新版本是1.2.15 2018/10/15 如果之前没有安装,请用"开始-所有程序-附件-命 ...
- python分析股票主力_python如何获取股票数据,python股票分析系统
内容导航: Q1:怎样用python处理股票 用Python处理股票需要获取股票数据,以国内股票数据为例,可以安装Python的第三方库:tushare:一个国内股票数据获取包.可以在百度中搜索&qu ...
最新文章
- Assembly of long, error-prone reads using repeat graphs 使用重复图组装长且容易出错的读操作
- Jupyter安装r内核
- 红帽系列linux自行配置本地yum源
- yum安装源是出现报冲突错误,解决办法
- 和虫师一起学python(7)
- PS教程第十五课:图层是最基本的要求
- java调用kafka
- mysql8 修改root密码
- 狗狗手机壁纸|爱宠必备
- NLP之路-一点小语言工具函数
- Python实现用户登录
- Spring Bean的循环依赖解决方案
- python中ascii的应用_Python程序中的ascii()
- 中国交互式智能板市场趋势报告、技术动态创新及市场预测
- “拼多多优惠券”测试的套路,今天让你秒懂~
- Kafka配置5--Windows下配置Kafka的集群+SASL+SSL
- am4xMjIx 解密,jn1221解密,AdminWeb 解密分析。
- 电源大师课笔记 1.8
- Kepware助力数据中心对接楼宇自动化系统
- SocksGun源码(类SocksCap)
热门文章
- 数据结构与算法——红黑树(Red Black Tree)
- Restful API 接口规范
- 二重积分x^2+y^2_计算二重积分∫∫(x+y)dxdy,其中D为x^2+y^2≤2x
- 矩阵出现重复特征值,其特征向量的简便求法
- 小总结:git的使用
- 谁先倒(15 分) 划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了,输家罚一杯酒
- 自定义制作音频播放器_使用HTML5制作音频播放器,第1部分:功能和设计
- IIC和SPI的异同
- 什么是node.js
- 需求分析——需求分析的步骤