easyquotation获取港股的bug

easyquotation:实时股票数据获取

easyquotation库,是一个非常好用的实时股票数据获取库,可以实时获取新浪、腾讯的免费股票行情,集思路的分级基金行情

安装

项目地址:https://github.com/shidenggui/easyquotation.git

shell 复制代码
pip install easyquotation

用法

python 复制代码
import easyquotation

quotation = easyquotation.use('sina') # 新浪 ['sina'] 腾讯 ['tencent', 'qq'] 

#获取所有股票行情
quotation.market_snapshot(prefix=True) # prefix 参数指定返回的行情字典中的股票代码 key 是否带 sz/sh 前缀

#获取单支股票
quotation.real('162411') # 支持直接指定前缀,如 'sh000001'

#获取多支股票
quotation.stocks(['000001', '162411']) 

#同时获取股票和行情
quotation.stocks(['sh000001', 'sz000001'], prefix=True) 

#获取集思路行情
quotation = easyquotation.use('jsl') # ['jsl']
quotation.set_cookie('从浏览器获取的集思录 Cookie')
quotation.funda() # 参数可选择利率、折价率、交易量、有无下折、是否永续来过滤
quotation.fundb() # 参数如上

#获取腾讯分时图数据
quotation = easyquotation.use("timekline")
data = quotation.real(['603828'], prefix=True)

#获取日k数据
quotation  = easyquotation.use("daykline")
data = quotation.real(['00001','00700'])

#获取港股数据
quotation = easyquotation.use("hkquote")
data = quotation.real(['00001','00700'])

bug

获取港股数据,easyquotation传数字股票代码没问题,如果获取指数数据如恒生指数(HSI),传入HSI后,返回数据为空,bug原因是返回的response封装,正则表达式只匹配了数字,所以传入字母代码后没有进行封装。

代码bug

在easyquotation库的HKQuote类中,format_response_data函数的正则表达式:r'v_r_hk\d+=".*?"',\d匹配了数字股票代码,港股的指数代码是字母的,所以将\d改成 .

python 复制代码
    def format_response_data(self, rep_data, **kwargs):
        stocks_detail = "".join(rep_data)

        stock_dict = {}
        for raw_quotation in re.findall(r'v_r_hk\d+=".*?"', stocks_detail):
            quotation = re.search('"(.*?)"', raw_quotation).group(1).split("~")
            stock_dict[quotation[2]] = dict(
                lotSize=float(quotation[0]),
                name=quotation[1],
                price=float(quotation[3]),
                lastPrice=float(quotation[4]),
                openPrice=float(quotation[5]),
                amount=float(quotation[6]),
                time=quotation[30],
                dtd=float(quotation[32]),
                high=float(quotation[33]),
                low=float(quotation[34]),
            )
        return stock_dict

bug修改方式

继承HKQuote类,重写format_response_data函数,然后如果要获取港股数据,使用自己的类

python 复制代码
import re
from easyquotation.hkquote import HKQuote

class IHKQuote(HKQuote):
	def format_response_data(self, rep_data, **kwargs):
        stocks_detail = "".join(rep_data)

        stock_dict = {}
        for raw_quotation in re.findall(r'v_r_hk.+=".*?"', stocks_detail):
            quotation = re.search('"(.*?)"', raw_quotation).group(1).split("~")
            stock_dict[quotation[2]] = dict(
                lotSize=float(quotation[0]),
                name=quotation[1],
                price=float(quotation[3]),
                lastPrice=float(quotation[4]),
                openPrice=float(quotation[5]),
                amount=float(quotation[6]),
                time=quotation[30],
                dtd=float(quotation[32]),
                high=float(quotation[33]),
                low=float(quotation[34]),
            )
        return stock_dict

调用方式

python 复制代码
from amend_easyquotation import IHKQuote

quotation = IHKQuote()
stock = quotation.stocks(['HSI'])
相关推荐
tokepson3 分钟前
关于python更换永久镜像源
python·技术·记录
F_D_Z7 分钟前
【解决办法】网络训练报错AttributeError: module ‘jax.core‘ has no attribute ‘Shape‘.
开发语言·python·jax
前端伪大叔19 分钟前
第29篇:99% 的量化新手死在挂单上:Freqtrade 隐藏技能揭秘
后端·python·github
韩曙亮1 小时前
【人工智能】AI 人工智能 技术 学习路径分析 ① ( Python语言 -> 微积分 / 概率论 / 线性代数 -> 机器学习 )
人工智能·python·学习·数学·机器学习·ai·微积分
喵叔哟2 小时前
6.配置管理详解
后端·python·flask
曾经的三心草2 小时前
基于正倒排索引的Java文档搜索引擎3-实现Index类-实现搜索模块-实现DocSearcher类
java·python·搜索引擎
MOMO陌染2 小时前
Python 饼图入门:3 行代码展示数据占比
后端·python
vvoennvv3 小时前
【Python TensorFlow】 TCN-GRU时间序列卷积门控循环神经网络时序预测算法(附代码)
python·rnn·神经网络·机器学习·gru·tensorflow·tcn
自学互联网4 小时前
使用Python构建钢铁行业生产监控系统:从理论到实践
开发语言·python
无心水4 小时前
【Python实战进阶】7、Python条件与循环实战详解:从基础语法到高级技巧
android·java·python·python列表推导式·python条件语句·python循环语句·python实战案例