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'])
相关推荐
程序员雷欧2 分钟前
LongAdder
开发语言·python
月光船幽幽12 分钟前
分层阈值规避归藏协议过度重置
人工智能·python
SMF191918 分钟前
【Linux】完美解决缩略图工具gm调用java.io.FileNotFoundException: gm问题
java·开发语言·python
㳺三才人子21 分钟前
初探 Data Analysis - Matplotlib
python·plotly·pandas·matplotlib
Python私教31 分钟前
0、null、未采集:AI Agent 反馈系统最容易踩的语义坑
人工智能·python
北斗落凡尘40 分钟前
LangGraph 入门实战(5)
python·langchain
Python私教1 小时前
请求超时不等于失败:把写操作恢复设计成事实回读
后端·python
且听风吟02201 小时前
7.包管理工具
python
程序员杰哥1 小时前
依赖于第三方接口时,如何进行测试?
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
java修仙传1 小时前
从网页禅道到 AI 能调用的工具:我的禅道 MCP 实现思路分享
java·人工智能·python·ai应用·mcp开发