首页
/ PyWenCai:同花顺问财数据获取工具

PyWenCai:同花顺问财数据获取工具

2026-02-06 05:34:04作者:余洋婵Anita

PyWenCai 是一个专为从同花顺问财平台获取股票市场数据设计的 Python 库。它借助同花顺强大的金融数据分析能力,提供了丰富的 API,支持获取各类股市指标、个股详情、行业分析等数据,对量化交易研究和金融市场分析而言价值重大。

声明

  1. PyWenCai 是开源社区开发的工具,并非同花顺官方提供。
  2. 此工具仅为效率工具,旨在方便通过 Python 获取问财数据,用于量化研究和学习,其原理与登录网页获取数据的方式一致。
  3. 建议低频使用,坚决反对高频调用,因为高频调用可能会被问财屏蔽,使用时请自行评估技术和法律风险。
  4. 项目代码遵循 MIT 开源协议,但不赞成商用,商用前请自行评估法律风险。
  5. 感谢问财提供免费接口和数据分享。

环境依赖

由于程序中需要执行 JS 代码,所以请先确保已安装 Node.js,且版本需为 v16+。若尚未安装,请自行进行安装。

安装

pip install pywencai

由于问财接口策略时常发生变化,为保证正常使用,请安装最新版本。遇到问题时,优先尝试升级来解决。

如何获取 cookie

⚠️ 注意:鉴于问财登录策略的调整,目前使用时必填 cookie 参数。以下是获取 cookie 参数的方法,即复制请求头中的 Cookie 字段值:

获取cookie示例

Demo

import pywencai

res = pywencai.get(query='退市股票', sort_key='退市@退市日期', sort_order='asc', cookie='xxx')
print(res)

API

get(**kwargs)

该方法用于根据问财语句查询结果。

参数

query

必填参数,用于指定查询问句。

老版本的 question 参数在 1.0 版本以后会被弃用,请统一使用 query 参数。

sort_key

非必填参数,用于指定用于排序的字段,其值为返回结果的列名。

sort_order

非必填参数,用于指定排序规则,可取值为 asc(升序)或 desc(降序)。

page

非必填参数,用于指定查询的页号,默认为 1。

perpage

非必填参数,用于指定每页的数据条数,默认值为 100。由于问财做了数据限制,最大值为 100,指定大于 100 的数值无效。

loop

非必填参数,默认值为 False,可设置为 True 或具体数值。当设置为 True 时,程序会一直循环到最后一页,返回全部数据;当设置为具体数值 n 时,循环请求 n 页,返回 n 页合并数据。

query_type

非必填参数,默认为 stock。当查询类型不是股票时需要传递该参数,具体取值及含义如下表:

取值 含义
stock 股票
zhishu 指数
fund 基金
hkstock 港股
usstock 美股
threeboard 新三板
conbond 可转债
insurance 保险
futures 期货
lccp 理财
foreign_exchange 外汇
retry

非必填参数,默认为 10,表示请求失败后的重试次数。

sleep

非必填参数,默认为 0,表示循环请求时每次请求的间隔秒数。

log

非必填参数,默认为 False,用于设置是否在控制台打印日志。

pro

非必填参数,默认为 False,付费版需传 True。

必须传入 cookie 参数才能使用付费版。

pywencai.get(question='近3个月每日市盈率', pro=True, cookie='xxxx')
cookie

必填参数,默认为 None。

request_params

非必填参数,默认为 {},可用于设置额外的 request 参数。

pywencai.get(query='昨日涨幅', sort_order='asc', loop=True, log=True, request_params={ 'proxies': proxies })

具体参数可参看:https://requests.readthedocs.io/en/latest/api/#requests.request

no_detail

非必填参数,默认为 False。当设置为 True 时,查询一些详情类问题不再返回字典,而是返回 None,这样可以保证查询结果类型始终为 pd.DataFrameNone

find

非必填参数,默认为 None,可传入一个数组,例如 ['600519', '000010'],数组内对应的标的会排列在 DataFrame 的最前面。

【注意】 1、该参数仅在结果为 DataFrame 时有效。2、配置该参数后,loop 参数会失效,结果只会返回前 100 条。

user_agent

非必填参数,默认为 None,可自行传入 user_agent,而不使用随机生成的 user_agent

返回值

当查询的是列表时,该方法返回一个 pandas 的 Dataframe;当查询的是详情时,该方法返回一个字典,字典中可能包含若干个文本和 Dataframe。

应用案例和最佳实践

查询历史数据

若要获取某支股票的历史收盘价格,可采用如下方法:

from datetime import timedelta
from pywencai import WenCaiAPI

def get_history_price(stock_code, end_date):
    api = WenCaiAPI()
    start_date = end_date - timedelta(days=365)
    query = f'代码={stock_code} and 日期 BETWEEN {start_date.strftime("%Y%m%d")} AND {end_date.strftime("%Y%m%d")}'
    result = api.get_data(query)
    return result[['日期', '收盘价']]

# 使用示例
history_prices = get_history_price('000001', datetime.now())
print(history_prices)

财务指标分析

PyWenCai 支持复杂的财务数据查询,例如:

query = '市净率<1 and ROE>10'
financial_data = api.get_data(query)

上述查询将返回所有市净率小于 1 但净资产收益率大于 10% 的公司列表。

典型生态项目

  • 量化交易系统:将 PyWenCai 与策略算法相结合,可开发自动化交易系统。
  • 金融数据分析:利用 PyWenCai 获取大规模市场数据,进行深入分析和可视化展示。
  • 风险管理模型:依据市场动态,调整投资组合的风险控制机制。

PyWenCai 作为连接开发者与同花顺强大数据资源的桥梁,推动了金融科技领域的发展。无论你是专业投资者还是数据分析师,都能从中获益。

登录后查看全文
热门项目推荐
相关项目推荐