网易首页 > 网易号 > 正文 申请入驻

实时获取股票数据,免费!——Python爬虫Sina Stock实战

0
分享至

更多量化内容,欢迎关注公众号:数量技术宅。

想要获取本期文中的完整策略,欢迎添加技术宅个人微信号:sljsz01,sljsz05。已加入知识星球会员也可直接在知识星球内获取本文源码。(知识星球优惠链接请见文末)

01

实时股票数据的重要性

对于四大可交易资产:股票、期货、期权、数字货币来说,期货、期权、数字货币,可以从交易所提供的api收到实时行情数据,而股票由于量化交易接口不面向普通人开放,导致大家想要获取到股票的实时数据,十分困难。而与此同时,股票实时数据,又是极其重要的场内交易数据。

对于手动交易者而言,实时数据一方面可以辅助盯盘,另一方面,可以用程序简单开发到价提醒,到某个价位,进行入场和出场的交易。

对于量化交易者,实时行情就更加重要了。我们接收实时行情之后,不仅需要用实时数据计算策略信号,而且当策略信号需要对某个股票进行下单的时候,我们也需要知道该股票的最新价格、盘口数据,从而根据价格+盘口,选择合适的价位下单。此外,实时数据落地后,还可以为我们的策略回测服务。

02

爬虫最通俗的原理解释

爬虫,相当于模仿了网页查询的动作,比如我们在浏览器中输入了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完美的模拟了浏览器的请求动作。

03

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类,主要实现功能:

  1. 传入线程实例对象,调用init、start方法,重载run函数

  2. work_queue存放要查询的队列,依次取出(FIFO),查询结果存到result_queue队列,当队列满,取出结果队列中所有查询结果,并打印

Stock类,主要实现功能:

  1. 初始化生产者、消费者队列,生产者队列为空,消费者队列最大数量是查询的股票数量

  2. 按预设的线程数据,初始化线程池,绑定Worker类

  3. 对于每次每只要查询的股票,加入生产者队列

  4. 定义爬虫获取数据的函数

最后,我们调用Worker类和Stock类,就能得到想要获取的结果了。

04

运行结果展示

程序不仅可以获取个股数据,也能够获取指数数据,我们默认订阅了上证指数、深圳综指、万科A、浦发银行,4个数据流,以下是默认运行结果的展示,我们打印了最新价、涨跌幅、昨收价等关键数据。我们按照一定的时间间隔,获取数据并打印。

程序的扩展:在主程序入口,可修改查询的股票数量,我们支持多股票同时查询;查询的时间间隔、查询的线程数量的修改。

当然,我们也可以对该爬虫程序做后续的进一步拓展,比如计算量化策略信号,落地数据作为回测数据,等等。

如果你想要获取这个Python爬虫Sina Stock程序,欢迎扫码添加技术宅的个人微信sljsz01或sljsz05,领取完整代码。

欢迎加入数量技术宅知识星球:量化学院,知识星球每日更新,内有更多量化干货,等着你来学习。量化学院=公众号全策略+星球独家量化干货+答疑+日更。欢迎订阅量化学院,用一年的时间,做一件让自己感动的事。

量化学院知识星球优惠链接

往期干货

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
伊朗不值得同情!两大国亲手为他搭好擂台,却反手被卖

伊朗不值得同情!两大国亲手为他搭好擂台,却反手被卖

毛豆论道
2026-03-02 17:01:06
外媒:特朗普对伊朗发出新威胁

外媒:特朗普对伊朗发出新威胁

参考消息
2026-03-01 15:52:28
伊朗反击太快,只给以2小时,导弹从天而降,以色列民众抱头鼠窜

伊朗反击太快,只给以2小时,导弹从天而降,以色列民众抱头鼠窜

书纪文谭
2026-03-02 17:24:46
560名美军死伤,弹药库剧烈大爆炸,伊朗导弹雨把以色列炸成火海

560名美军死伤,弹药库剧烈大爆炸,伊朗导弹雨把以色列炸成火海

策略述
2026-03-02 14:41:25
“伊朗德黑兰飞乌鲁木齐航班进入中国领空 机舱内传来广播”视频热传 川航:未开通伊朗航线

“伊朗德黑兰飞乌鲁木齐航班进入中国领空 机舱内传来广播”视频热传 川航:未开通伊朗航线

闪电新闻
2026-03-02 17:29:47
严厉制止网络上过度宣扬“失业潮失业人数及躺平”等不良思想——

严厉制止网络上过度宣扬“失业潮失业人数及躺平”等不良思想——

叶初七
2026-03-02 17:06:05
内贾德没有死,秘书公布遇袭细节

内贾德没有死,秘书公布遇袭细节

世家宝
2026-03-02 14:06:27
新华时评:当炸弹落在校园,文明底线何在

新华时评:当炸弹落在校园,文明底线何在

澎湃新闻
2026-03-01 22:32:48
35年前,美国科学家进行实验,4男4女共处一室2年,结果怎么样?

35年前,美国科学家进行实验,4男4女共处一室2年,结果怎么样?

小豫讲故事
2026-03-02 06:00:03
重大进展!伊朗作出“前所未有”承诺:同意永远不拥有可制造核武器的核材料,将实现“零积累、零库存”,并接受全面核查!特朗普最新表态

重大进展!伊朗作出“前所未有”承诺:同意永远不拥有可制造核武器的核材料,将实现“零积累、零库存”,并接受全面核查!特朗普最新表态

每日经济新闻
2026-02-28 10:40:45
如果伊朗提出请求中俄会向其提供军事支持吗?外交部回应

如果伊朗提出请求中俄会向其提供军事支持吗?外交部回应

澎湃新闻
2026-03-02 15:36:48
28场造20球!韦世豪疑不满无缘金球奖:发笑哭表情 配乐《偷感》

28场造20球!韦世豪疑不满无缘金球奖:发笑哭表情 配乐《偷感》

风过乡
2026-03-02 19:54:23
内塔尼亚胡办公室遭猛烈袭击!伊朗:摧毁美国一总领馆及一军事基地,击落3架美军机

内塔尼亚胡办公室遭猛烈袭击!伊朗:摧毁美国一总领馆及一军事基地,击落3架美军机

新民晚报
2026-03-02 19:04:01
全国政协委员刘永好:建议全民发放500元通用消费券 可拉动消费近2万亿元

全国政协委员刘永好:建议全民发放500元通用消费券 可拉动消费近2万亿元

财联社
2026-03-02 10:57:04
伊朗发射近1200枚导弹报复美国和以色列

伊朗发射近1200枚导弹报复美国和以色列

中国网
2026-03-01 16:43:10
海澜之家被“全军拉黑”!中标后拒签合同,200亿撑不起一单军需

海澜之家被“全军拉黑”!中标后拒签合同,200亿撑不起一单军需

新浪财经
2026-03-02 16:03:13
中国与伊朗接近达成超音速导弹采购协议?外交部:不属实!

中国与伊朗接近达成超音速导弹采购协议?外交部:不属实!

澎湃新闻
2026-03-02 15:36:40
宁可放弃中国市场,也不删镜头!《蜘蛛侠:英雄无归》没引进的真相终于来了

宁可放弃中国市场,也不删镜头!《蜘蛛侠:英雄无归》没引进的真相终于来了

小椰的奶奶
2026-03-02 10:32:14
刚刚,全线暴跌!紧急救市!

刚刚,全线暴跌!紧急救市!

中国基金报
2026-03-02 17:11:34
“斩首”行动细节揭秘:美以战机同地起飞,直扑哈梅内伊

“斩首”行动细节揭秘:美以战机同地起飞,直扑哈梅内伊

中国新闻周刊
2026-03-02 10:32:04
2026-03-02 23:51:00
数量技术宅 incentive-icons
数量技术宅
爱好数据分析量化投资的技术宅
269文章数 211关注度
往期回顾 全部

科技要闻

苹果中国官网上线iPhone 17e,4499元起

头条要闻

媒体:拉里贾尼走向前台 四大关键变量将决定伊朗命运

头条要闻

媒体:拉里贾尼走向前台 四大关键变量将决定伊朗命运

体育要闻

“想要我签名吗” 梅西逆转后嘲讽对手主帅

娱乐要闻

李亚鹏与哥哥和解 只有一条真心话短信

财经要闻

油价飙升 美伊冲突将如何搅动全球经济

汽车要闻

国民SUV再添一员 瑞虎7L静态体验

态度原创

房产
本地
游戏
家居
公开课

房产要闻

方案突然曝光!海口北师大附校,又有书包大盘杀出!

本地新闻

津南好·四时总相宜

《宝可梦》新作M站90分!近年最新鲜的宝可梦体验

家居要闻

万物互联 享科技福祉

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版