百木园-与人分享,
就是让自己快乐。

股票数据爬虫进阶:免费、开源的股票爬虫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 easyquotationquotation = 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\'])

     

    往期干货分享推荐阅读

    数字货币稳定币对网格做市策略

    数字货币资金费策略

    分享一个年化15%以上的无风险套利机会

    网格交易系统开发

    通过深度学习股价截面数据分析和预测股票价格

    Omega System Trading and Development Club内部分享策略Easylanguage源码

    一个真实数据集的完整机器学习解决方案(下)

    一个真实数据集的完整机器学习解决方案(上)

    如何使用交易开拓者(TB)开发数字货币策略

    股指期货高频数据机器学习预测

    如何使用TradingView(TV)回测数字货币交易策略

    如何投资股票型基金?什么时间买?买什么?

    【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略

    AMA指标原作者Perry Kaufman 100+套交易策略源码分享

    【 数量技术宅 | 期权系列分享】期权策略的“独孤九剑”

    【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

    【数量技术宅|量化投资策略系列分享】成熟交易者期货持仓跟随策略

    如何获取免费的数字货币历史数据

    【数量技术宅|量化投资策略系列分享】多周期共振交易策略

    【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数

    商品现货数据不好拿?商品季节性难跟踪?一键解决没烦恼的Python爬虫分享

    【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品

    【数量技术宅|量化投资策略系列分享】股指期货IF分钟波动率统计策略

    【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫

    来源:https://www.cnblogs.com/sljsz/p/15582267.html
    图文来源于网络,如有侵权请联系删除。

    未经允许不得转载:百木园 » 股票数据爬虫进阶:免费、开源的股票爬虫Python库,实测真香

    相关推荐

    • 暂无文章