股票数据爬虫进阶:免费、开源的股票爬虫Python库,实测真香
更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。
免费、开源的股票爬虫Python库:Easyquotation
我们在此前的文章中,向大家分享了如何用Python爬虫,从新浪财经获取实时的股票数据:(文章链接)。本期文章,我们将介绍一个股票数据爬虫的进阶工具:一个叫做Easyquotation的Python三方库,这个py三方库内置了爬取多个不同的股票数据源的功能,数据源包括:
新浪财经:全部A股实时行情(snapshot)
集思录:分级基金、ETF、QDII实时数据
腾讯财经:A股日内分时行情、港股日k线行情、港股实时行情(snapshot)
新浪财经的实时行情,我们不再赘述。对于集思录,这是一个提供侧重债息相关的投资品种,例如新股、可转债、分级基金、债券、封闭基金、QDII、ETF、LOF 等资产标的数据的专业平台,投资者可以通过集思录数据,分析理论价值及其偏差,找到各种低风险的套利机会,而Easyquotation支持我们从集思录上爬取其公布的数据,进而可以使用Python跟踪套利机会。对于腾讯财经,它不仅提供A股的日内行情,还提供港股的日K线数据以及实时行情数据,对于有港股交易需求的朋友来说,爬取腾讯财经的免费港股数据,不失为一个经济的方案。
使用准备
接下来,我们介绍在使用Easyquotation前,需要做的准备工作,大致可以分为两步:
首先,我们需要安装Requests三方库。Requests库可以说是所有爬虫的”标配“,Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库。与urllib相比,Requests更加方便,可以节约我们大量的工作。由于easyquotation的爬虫依赖Requests库,所以我们必须先确保电脑中安装好Requests库。
第二步,安装Easyquotation。Easyquotation有两种安装方式,我们既可以通过pip install的方式进行一键安装,也可也从github上clone对应的库文件,进行手工安装。安装完Easyquotation库,我们就可以开始使用它了。
简要介绍
在实测代码使用Easyquotation之前,我们先对其主体逻辑,做一个简单介绍:
首先,Easyquotation的Api提供了一个入口,允许我们在使用时,选择爬取哪个数据源,Easyquotation支持的数据源包括:新浪、集思录、腾讯以及中国银行(汇率),中国银行的数据源主要为了读取美元人民币等主流外汇的汇率,我们平时用的比较少,所以文章重点介绍前3个爬虫数据源的使用:新浪财经、集思录、腾讯财经。
其次,Easyquotation有一个名为Basequotation基类,这个基类大家不需要特别理解它的技术细节,只需要知道它的总体功能,包括两方面:一是定义爬虫获取数据的基础函数,二是创建查询线程池。
最后,是各个扩展子类,子类有三大功能:继承基类函数、重载自定义行情源、接收数据的处理函数。而我们后续要做的实测,就是将子类进行实例化。比如我们用新浪财经的爬虫数据,就是实例化Sina的子类,而如果我们用集思录的爬虫数据,就是实例化jsl的子类,其他子类,皆可以此类推。
实测:新浪财经爬虫
示例1:新浪财经爬取全市场股票实时数据(snapshot)。Easyquotation中有一个好用的方法market_snapshot,可以用一个函数爬取到沪深两市所有股票的实时数据(snapshot)。
import easyquotation
quotation = easyquotation.use('sina')
Res_Sina_AllSnap = quotation.market_snapshot(prefix=True)
示例2:获取交易所上市ETF的实时Ticker数据,调用real方法,我们以513050中概互联为例,获取到该ETF相应的Ticker,具体字段参见运行结果截图。
Res_Sina_stock = quotation.real('513050')
示例3:获取个股实时Ticker数据,调用stocks方法,该方法支持同时获取多个个股,采用逗号分隔的形式,例如我们同时获取600519、601888的实时Ticker数据,返回的字段与ETF的Ticker数据字段相同。
Res_Sina_stocks = quotation.stocks(['600519', '601888'])
示例4:获取交易所指数的实时Ticker数据,同样调用stocks方法,同样支持同时获取多个指数,仍采用逗号分隔的形式,我们这里实时获取sh000001上证指数、sz000001深圳综指的Ticker数据。需要注意的是,由于指数不存在盘口,所以此时返回的bid、ask数据都为0。
Res_Sina_index = quotation.stocks(['sh000001', 'sz000001'], prefix=True)
实测:集思录爬虫
我们再继续测试集思录的爬虫,我们通过jsl子类的实例化,并依次调用funda、fundb、qdii、etfindex,分别获取到集思录整理的分级A、分级B、QDII以及ETF的数据。再将这些数据转换为标准的DataFrame格式,方便我们查看数据字段与数据内容。实现代码、数据字段如下:
quotation = easyquotation.use('jsl')
Res_Jsl_fja = quotation.funda()
Res_Jsl_fjb = quotation.fundb()
Res_Jsl_qd = quotation.qdii()
Res_Jsl_etf = quotation.etfindex()
df_Jsl_fja = pd.DataFrame.from_dict(Res_Jsl_fja, orient='index')
df_Jsl_fjb = pd.DataFrame.from_dict(Res_Jsl_fjb, orient='index')
df_Jsl_qd = pd.DataFrame.from_dict(Res_Jsl_qd, orient='index')
df_Jsl_etf = pd.DataFrame.from_dict(Res_Jsl_etf, orient='index')
分级A数据字段
分级B数据字段
ETF数据字段
QDII数据字段
实测:腾讯财经爬虫
腾讯财经爬虫是三个股票数据爬虫中,功能最强大的。腾讯财经能够获取到新浪财经所没有的A股日内分时数据、港股日线数据、以及港股日内数据。
示例1:A股日内分时图
我们通过腾讯财经,可以获取到A股个股当日的完整分时数据,从而画出该股票的日内分时图,有了分时数据,我们可以利用分时数据,做我们想要的日内指标、进出场点位的计算。
在下面的代码中,我们仍然以600519贵州茅台为例,通过real方法获取股票日内分时数据,并将分时图用Python绘图工具绘制出来。
quotation = easyquotation.use("timekline")
querycode = '600519'
Res_tx_mindata = quotation.real([querycode], prefix=True)
querykey = 'sh' + querycode + '.js'
mindata = pd.DataFrame(Res_tx_mindata[querykey]['time_data'], columns=['time', 'close', 'volume'])
mindata['close'] = mindata['close'].map(lambda x: float(x))
mindata['volume'] = mindata['volume'].map(lambda x: int(x))
fig, ax = plt.subplots(1, 1)
ax_sub = ax.twinx() # 共享x轴,生成次坐标轴
l1, = ax.plot(mindata.time, mindata.close, 'r-', label='price')
l2, = ax_sub.plot(mindata.time, mindata.volume, 'b-', label='volume')
plt.legend(handles=[l1, l2], labels=['price', 'volume'], loc=0)
ax.set_ylabel('price')
ax_sub.set_ylabel('volume')
ax.set_xlabel('time')
ax.set_title('stock realtime')
x_major_locator = MultipleLocator(10)
ax.xaxis.set_major_locator(x_major_locator)
示例2:港股日线数据
除了A股的日内分时数据外,我们还可以通过real方法,获取到港股的日k线数据,只需要向该方法的参数中,传入5位数的港股股票代码,即可调用该部分数据。获取数据后,我们仍然用Python绘图,将示例股票00700腾讯控股的日k线数据量、价数据,绘制出来。
querycode = '00700'
Res_tx_hk_dailydata = quotation.real([querycode])
hk_dailydata = pd.DataFrame(Res_tx_hk_dailydata[querycode],
columns=['Date', 'Open', 'Close', 'High', 'Low', 'volume', 'divi', 'none', 'amount'])
hk_dailydata['Close'] = hk_dailydata['Close'].map(lambda x: float(x))
hk_dailydata['volume'] = hk_dailydata['volume'].map(lambda x: float(x))
fig, ax = plt.subplots(1, 1)
ax_sub = ax.twinx() # 共享x轴,生成次坐标轴
l1, = ax.plot(hk_dailydata.Date, hk_dailydata.Close, 'r-', label='price')
l2, = ax_sub.plot(hk_dailydata.Date, hk_dailydata.volume, 'b-', label='volume')
plt.legend(handles=[l1, l2], labels=['price', 'volume'], loc=0)
ax.set_ylabel('price')
ax_sub.set_ylabel('volume')
ax.set_xlabel('time')
ax.set_title(querycode + ' stock daily')
x_major_locator = MultipleLocator(120)
ax.xaxis.set_major_locator(x_major_locator)
示例3:港股实时行情
我们不仅可以获取港股的日线数据,还能获取港股的实时行情数据。具体的,我们将实例化的类切换成hkquote,并调用real方法,传入参数同样是五位数的港股代码,同时支持多股传入(逗号隔开),就可以获取到港股的实时数据了。此处我们以00001长和、00700腾讯控股为例,获取到了实时的Snapshot数据。
quotation = easyquotation.use("hkquote")
Res_tx_hk_Snap = quotation.real(['00001', '00700'])
往期干货分享推荐阅读
Omega System Trading and Development Club内部分享策略Easylanguage源码
【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略
AMA指标原作者Perry Kaufman 100+套交易策略源码分享
【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单
【数量技术宅|量化投资策略系列分享】成熟交易者期货持仓跟随策略
【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数
商品现货数据不好拿?商品季节性难跟踪?一键解决没烦恼的Python爬虫分享
【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品
【数量技术宅|量化投资策略系列分享】股指期货IF分钟波动率统计策略
【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫
股票数据爬虫进阶:免费、开源的股票爬虫Python库,实测真香的更多相关文章
- python网络爬虫进阶之HTTP原理,爬虫的基本原理,Cookies和代理介绍
目录 一.HTTP基本原理 (一)URI和URL (二)超文本 (三)HTTP和HTTPS (四)HTTP请求过程 (五)请求 1.请求方法 2.请求的网址 3.请求头 4.请求体 (六)响应 1.响 ...
- 免费开源的 .NET 分布式组件库 Exceptionless Foundatio
前言 在互联网时代,分布式应用.系统变得越来越多,我们在使用 .Net 技术构建分布式系统的时候,需要使用到一些组件或者是助手库来帮助我们提高生产力以及应用程序解耦,但是纵观.Net圈,能够符合要求的 ...
- python爬虫成长之路(一):抓取证券之星的股票数据
获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为python3.5,意在抓取证券之星上当天所 ...
- VBA GET POST HTTP VBA网络爬虫 最新Excel自动获取股票信息源码 EXCEL自动获取网络数据 最新VBA自动抓取股票数据源码
最新Excel自动获取股票信息源码 EXCEL自动获取网络数据 最新VBA自动抓取股票数据源码 通过接口获取股票数据内容的主要优点包括以下几点: 实时性高:通过访问股票数据接口,可以实时获取到股票的实 ...
- Java爬取同花顺股票数据(附源码)
最近有小伙伴问我能不能抓取同花顺的数据,最近股票行情还不错,想把数据抓下来自己分析分析.我大A股,大家都知道的,一个概念火了,相应的股票就都大涨. 如果能及时获取股票涨跌信息,那就能在刚开始火起来的时 ...
- 实时获取股票数据,免费!——Python爬虫Sina Stock实战
更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 实时股票数据的重要性 对于四大可交易资产:股票.期货.期权.数字货币来说,期货.期权.数字货币,可以从交 ...
- 免费股票数据API接口
免费股票数据API接口提供沪深.香港.美国股市信息. 1.沪深股市 2.香港股市 3.美国股市 4.香港股市列表 5.美国股市列表 6.深圳股市列表 7.沪股列表 API文档:https://www. ...
- Python爬虫 股票数据爬取
前一篇提到了与股票数据相关的可能几种数据情况,本篇接着上篇,介绍一下多个网页的数据爬取.目标抓取平安银行(000001)从1989年~2017年的全部财务数据. 数据源分析 地址分析 http://m ...
- 使用python爬虫爬取股票数据
前言: 编写一个爬虫脚本,用于爬取东方财富网的上海股票代码,并通过爬取百度股票的单个股票数据,将所有上海股票数据爬取下来并保存到本地文件中 系统环境: 64位win10系统,64位python3.6, ...
- Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储
Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...
随机推荐
- P5318 查阅文献
题意大概意思就是分别用dfs与bfs遍历一个图,特殊要求是从编号小的点开始遍历. 用邻接表存图,至今我也没想明白怎么才可以从编号小的点开始遍历,明白是排序,但是不知道如何排序,题解中的排序方法是:按照 ...
- MySQL大表设计怎么做?
MySQL是一种常用的关系型数据库管理系统,它在处理大表时需要特别注意设计和优化.下面将详细介绍MySQL大表的设计原则和优化策略. 1. 数据库设计 数据库范式化:将数据按照规范的关系模型进行拆分和 ...
- PHP异步通信
目录 PHP swoole websocket服务器端 websocket 客户端 直播平台 基于宝塔nginx安装Nginx-rtmp-module搭建流媒体服务器 web H5端拉流 其他 PHP ...
- chatgpt接口开发笔记3: 语音识别接口
chatgpt接口开发笔记3: 语音识别接口 1.文本转语音 1.了解接口参数 接口地址: POST https://api.openai.com/v1/audio/speech 下面是接口文档描述内 ...
- Azure - 机器学习企业级服务概述与介绍
Azure 机器学习 - 为端到端机器学习生命周期使用企业级 AI 服务. 关注TechLead,分享AI全维度知识.作者拥有10+年互联网服务架构.AI产品研发经验.团队管理经验,同济本复旦硕,复旦 ...
- Linux笔记01: Linux简介
1.1 操作系统 计算机系统是由硬件子系统(处理器.内存.硬盘.键盘.鼠标.显示屏等)和软件子系统(如Windows操作系统.Office办公软件等)组成. 操作系统(Operating System ...
- [ARC150F] Constant Sum Subsequence
Problem Statement We have a sequence of positive integers of length $N^2$, $A=(A_1,\ A_2,\ \dots,\ A ...
- 【案例教程】LoadRunner订票系统WebTours部署
题目: 使用LoadRunner自带的测试项目--航班订票管理系统WebTours,网站地址为:http://127.0.0.1:1080/WebTours/ (用户名为jojo,密码为bean),完 ...
- flchart库判断当前点击的底部title的index
使用flchart库,版本0.35,在点击柱状图时,当柱状图的高度为0,默认选中热区很小,很难点击选中对应区域,如图一 9和10的柱状图高度为0. 查了源码,貌似没有单独针对底部title设置点击事件 ...
- 一个简单的Python暴力破解网站登录密码脚本
目录: 关键代码解释 完整代码 方法一 运行结果 方法二 运行结果 测试靶机为DVWA,适合DVWA暴力破解模块的Low和Medium等级 关键代码解释 url指定url地址 url = " ...