资讯中心

3步搞定A股实时监控脚本:用 pysnowball 雪球数据接口快速上手

📅 2026/8/19 10:12:19
3步搞定A股实时监控脚本:用 pysnowball 雪球数据接口快速上手
3步搞定A股实时监控脚本用 pysnowball 雪球数据接口快速上手【免费下载链接】pysnowball雪球股票数据接口 python edition项目地址: https://gitcode.com/gh_mirrors/py/pysnowball每天开盘前你是不是也要手动打开好几个页面先看自选股涨跌再翻一遍持仓基金净值最后还要核对几只重点股票的成交量我最初也是这么干的直到我把这套流程写成一个脚本用 pysnowball雪球股票数据接口的 Python 版一次性拉回所有数据。这篇文章就把这套从配置到跑通的完整路径拆给你看全程只需要三件套装库、配 token、写调用。自己爬网页 VS 现成数据接口在动手之前先回答一个绕不开的问题为什么不自建爬虫抓行情我自己踩过坑把两种方案的关键差异整理成一张表对比项手写爬虫pysnowball 数据接口接口稳定性网页改版就失效要持续维护封装雪球接口结构稳定数据格式HTML 里自己抠字段直接返回 JSON字段成体系覆盖面通常只能拿到行情行情、财务、基金、资金流、F10 全覆盖上手成本要处理请求头、Cookie、反爬一个函数一个接口一句话总结爬虫是把时间花在怎么拿到数据上而用 pysnowball 是把时间花在用数据做什么上。下面是它的实际能力清单代码在仓库的pysnowball/目录下按模块划分__init__.py里统一导出了全部函数实时行情quotec、quote_detail、pankou、kline日/周/月/60分/30分/1分财务数据income、balance、cash_flow、indicator、business三大报表加核心指标资金流向capital_flow当日分时、capital_history历史日线、capital_assort成交分布基金数据fund_info、fund_nav_history、fund_growth、fund_asset等 9 个接口F10 专题top_holders十大股东、bonus分红、main_indicator主要指标等首次配置三步走安装、token、连通性验证第一步安装并导入安装命令和普通 Python 库没有区别pip install pysnowball然后以ball为别名导入后面所有接口都从这个命名空间调用import pysnowball as ball第二步配置雪球 token这是整个上手过程中唯一容易卡住的环节。原理很简单pysnowball 底层请求雪球接口时需要携带你登录雪球的 Cookie 凭证核心是两个值——xq_a_token和u。获取方式浏览器登录雪球网页版按 F12 打开开发者工具在 Network 面板任意请求的 Cookie 里就能找到它们。拿到后调用set_token写入环境变量pysnowball/token.py的实现就是把值存进XUEQIUTOKENball.set_token(xq_a_token你的token值;u你的用户id)注意两点一是这个 token 有有效期过期后脚本会报错届时重新抓取即可二是不要把它写进公开仓库建议放进本地配置文件。第三步用一次性接口验证连通性有个小技巧值得先记住行情快照quotec走的是fetch_without_token见pysnowball/utls.py不校验 token很适合拿来当网没网、库装没装好的冒烟测试# 上证指数快照无需token即可返回 print(ball.quotec(SH000001))这一步能跑通说明环境没问题。接下来需要 token 的接口就都能放心使用了。实战一把雪球自选股拉成一张涨跌表很多人不知道watch_list可以直接读取你雪球账号下的自选股列表配合quotec批量取行情十几行代码就是一个今日自选监控import pysnowball as ball # 1. 读取自选股列表返回的分组信息里category1 是股票分组 watch ball.watch_list()[data][stocks] my_group [g for g in watch if g[id] -1][0] # id-1 代表全部分组 # 2. 取该分组下的股票代码 stocks ball.watch_stock(my_group[id])[data][stocks] symbols ,.join(s[symbol] for s in stocks) # 逗号拼接一次批量请求 # 3. 批量获取行情只保留关心的字段 quotes ball.quotec(symbols)[data] for q in quotes: print(f{q[name]:8} 现价 {q[current]:8.2f} 涨跌幅 {q[percent]:6.2f}% 成交量 {q[volume]})这段代码的讲解价值在于自选列表和行情是两个独立接口先取名单、再批量取价中间用逗号把代码拼成一个字符串一次请求搞定全部股票比逐个调用高效得多。实战二把基金净值走势变成可视化报告股票看完再看基金。基金类接口走的是蛋卷数据源utls.py中的fetch_danjuan_fund不需要 token非常省心。下面这段代码抓取一只基金的近期净值并顺手算出区间收益import pysnowball as ball from datetime import datetime def fund_snapshot(fund_code, pages3): # 1. 基金基本信息名称、最新净值、各周期涨跌幅都在 fund_derived 里 info ball.fund_info(fund_code)[data] derived info[fund_derived] print(f基金{info[fd_name]} 最新净值{derived[unit_nav]}) print(f近1月 {derived[nav_grl1m]}% 近3月 {derived[nav_grl3m]}% 近1年 {derived[nav_grl1y]}%) # 2. 分页拉取历史净值默认每页10条这里取3页共30天 history [] for page in range(1, pages 1): data ball.fund_nav_history(fund_code, pagepage, size10) history.extend(data[data][items]) # 3. 转成日期-净值序列并计算区间收益率 series sorted( (datetime.fromtimestamp(int(i[nav_date]) / 1000), float(i[unit_nav])) for i in history if i.get(unit_nav) ) start_d, start_v series[0] end_d, end_v series[-1] print(f区间 {start_d:%Y-%m-%d} ~ {end_d:%Y-%m-%d}) print(f累计收益 {(end_v / start_v - 1) * 100:.2f}%) fund_snapshot(008975)这段代码的关键点有三个分页参数page/size控制拉取量时间戳毫秒转日期需要// 1000排序保证净值按时间递增收益率计算才不出错。fund_nav_history的完整参数说明可以在仓库的APIs/fund_nav_history.md文档里找到。进阶批量场景下的限流与报错排查清单脚本跑通之后如果你开始批量拉全市场数据会遇到两类问题请求太频繁被限流、token 过期导致报错。这里给出一份可照抄的排查清单报错 1未设置TOKENpysnowball/cons.py里定义了这个错误信息触发原因是set_token没调用或环境变量丢失。检查代码里是否在导入后立即设置了 token且拼写与 Cookie 中的字段名完全一致。报错 2接口返回异常或非 200utls.py的fetch在非 200 状态时会直接抛出异常。最常见的原因是 token 失效——重新登录雪球抓取最新 Cookie 即可。其次检查网络代理是否拦截了stock.xueqiu.com域名。报错 3请求频繁被限流批量场景建议自己加一层限流器控制每分钟请求数避免触发风控import time from collections import deque class RateLimiter: def __init__(self, max_per_minute30): self.max max_per_minute self.stamps deque() def wait(self): now time.time() while self.stamps and now - self.stamps[0] 60: self.stamps.popleft() if len(self.stamps) self.max: sleep 60 - (now - self.stamps[0]) 1 time.sleep(max(sleep, 0)) self.stamps.append(time.time()) # 用法每次调用前 limiter.wait() limiter RateLimiter(max_per_minute30) for code in stock_list: limiter.wait() data ball.quote_detail(code)另外重试机制也很实用遇到偶发网络抖动包一层带退避的重试即可不必每次手动重跑。把脚本变成你的每日开盘前习惯回头看这套流程的全部价值就是把手动刷新十几个页面压缩成了运行一个脚本自选股行情、持仓基金净值、区间收益一次性输出。pysnowball 值得一试的理由很实在——安装一条命令、配置一个 token、调用就是一个个函数数据从行情到财务到资金流全覆盖足够支撑个人量化研究和投资跟踪的大部分需求。想进一步探索仓库里还有几份现成的接口文档可以直接查阅基金类接口见APIs/目录下的fund_*.mdK 线返回结构见APIs/realtime_kline.md全部函数签名以pysnowball/__init__.py的导出为准。如果你也想加入量化交流可以扫描项目根目录下的wx.png二维码搜索宽客笔记找到组织。现在就动手吧git clone https://gitcode.com/gh_mirrors/py/pysnowball装上依赖、配好 token把上面两个实战脚本改成你自己的自选列表明天开盘前让数据替你打工。【免费下载链接】pysnowball雪球股票数据接口 python edition项目地址: https://gitcode.com/gh_mirrors/py/pysnowball创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考