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

实时获取股票数据,免费!——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-02-16 20:35:50
朴宝蓝突猝逝「死因急性酒精中毒」 好友庆32岁冥诞:姐姐们来了

朴宝蓝突猝逝「死因急性酒精中毒」 好友庆32岁冥诞:姐姐们来了

ETtoday星光云
2026-03-02 13:02:43
油市“末日时钟”!若霍尔木兹海峡关闭25天 中东产油国将被迫停产?

油市“末日时钟”!若霍尔木兹海峡关闭25天 中东产油国将被迫停产?

财联社
2026-03-02 14:08:05
预计到了2030年,我们将全面进入租房时代,房子会越来越难卖

预计到了2030年,我们将全面进入租房时代,房子会越来越难卖

猫叔东山再起
2026-03-02 09:35:03
51死60伤!美以为何空袭伊朗小学?专家:或为全面威慑伊朗,或属“误伤”,未来几天三方行动是关键

51死60伤!美以为何空袭伊朗小学?专家:或为全面威慑伊朗,或属“误伤”,未来几天三方行动是关键

极目新闻
2026-02-28 22:09:29
西方媒体欠我们道歉!美国游客回国说实话:中国的强大,藏在凌晨两点的便利店

西方媒体欠我们道歉!美国游客回国说实话:中国的强大,藏在凌晨两点的便利店

吃货的分享
2026-03-02 16:04:20
汪小菲窝里横!直播说:我知道我妈对我好,她不会和我生气的!

汪小菲窝里横!直播说:我知道我妈对我好,她不会和我生气的!

小娱乐悠悠
2026-03-02 13:39:43
又见证历史了,三桶油历史性涨停

又见证历史了,三桶油历史性涨停

金石随笔
2026-03-02 16:29:29
世界杯突生变故,伊朗考虑退赛,递补球队浮现,中国队起死回生?

世界杯突生变故,伊朗考虑退赛,递补球队浮现,中国队起死回生?

绿茵舞着
2026-03-01 20:57:22
中国石油历史上9次涨停

中国石油历史上9次涨停

贝壳财经
2026-03-02 15:43:25
哈梅内伊一死,普京紧急召令全部高层,却只说了几个字

哈梅内伊一死,普京紧急召令全部高层,却只说了几个字

书纪文谭
2026-03-02 16:26:02
谁能想到她已经62了,说18都有人信,怎么做到这么好的状态的

谁能想到她已经62了,说18都有人信,怎么做到这么好的状态的

白宸侃片
2026-02-11 11:56:19
赵本山近况曝光!68岁高龄现身美国加州,这状态你敢信?

赵本山近况曝光!68岁高龄现身美国加州,这状态你敢信?

手工制作阿歼
2026-03-01 16:51:57
哈梅内伊神秘遗言公开,特朗普平添巨大风险,伊朗或决心永远不跪

哈梅内伊神秘遗言公开,特朗普平添巨大风险,伊朗或决心永远不跪

三石记
2026-03-02 15:11:39
3打5!又两国参战中东,3国加入美以,关键时刻,普京对中承诺

3打5!又两国参战中东,3国加入美以,关键时刻,普京对中承诺

面包夹知识
2026-03-02 13:35:18
孙志浩肝癌晚期,将50亿资产里的豪宅与股份尽数转至女儿梧桐妹

孙志浩肝癌晚期,将50亿资产里的豪宅与股份尽数转至女儿梧桐妹

陈意小可爱
2026-03-01 10:33:40
王一博风波升级!吐槽肖战等十几位明星,细节对上,爆料者被扒!

王一博风波升级!吐槽肖战等十几位明星,细节对上,爆料者被扒!

阿废冷眼观察所
2026-03-02 07:15:35
埃及被打醒了,苏35和歼10都不买:就要一种4000万美元中国新军机

埃及被打醒了,苏35和歼10都不买:就要一种4000万美元中国新军机

近史谈
2026-01-17 21:44:06
过去100年,美国搞垮了4个世界老二,第5个或将反手干掉美国!

过去100年,美国搞垮了4个世界老二,第5个或将反手干掉美国!

苏大强专栏
2024-07-20 13:22:14
周杰伦和田馥甄恋情,突冲热搜第一!

周杰伦和田馥甄恋情,突冲热搜第一!

人间颂
2026-03-01 12:25:17
2026-03-02 18:00:49
数量技术宅 incentive-icons
数量技术宅
爱好数据分析量化投资的技术宅
269文章数 211关注度
往期回顾 全部

科技要闻

荣耀发布机器人手机、折叠屏、人形机器人

头条要闻

36岁副镇长开会晕倒除夕当天不幸离世 家中有3个孩子

头条要闻

36岁副镇长开会晕倒除夕当天不幸离世 家中有3个孩子

体育要闻

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

娱乐要闻

美伊以冲突爆发,多位明星被困中东

财经要闻

金银大涨 市场仍在评估冲突会否长期化

汽车要闻

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

态度原创

家居
手机
旅游
健康
公开课

家居要闻

万物互联 享科技福祉

手机要闻

vivo韩伯啸揭秘X300 Ultra手机视频拍摄升级亮点

旅游要闻

河南上元节去哪儿观灯逛庙会?超全攻略在此,跟着逛就对了!

转头就晕的耳石症,能开车上班吗?

公开课

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

无障碍浏览 进入关怀版