pywencai

同花顺问财自然语言数据查询工具 - 使用中文自然语言查询A股、指数、基金、港美股、可转债等市场数据。

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "pywencai" with this command: npx skills add coderwpf/pywencai

PyWenCai(同花顺问财数据查询)

通过Python使用中文自然语言从同花顺问财查询A股及其他市场数据。

⚠️ 需要Cookie:必须提供问财网站的有效Cookie。获取方法见下文。

环境要求

  • Python 3.7+
  • Node.js v16+ (pywencai internally executes JS code)
  • pip package manager

安装

pip install pywencai --upgrade

如何获取Cookie

  1. 在浏览器中打开 https://www.iwencai.com/ 并登录。
  2. 按F12打开开发者工具 → 切换到Network标签。
  3. 在问财页面执行任意查询。
  4. 找到发往iwencai.com的请求,从请求头中复制Cookie值。
  5. 将该字符串作为cookie参数使用。

基本用法

import pywencai

# 查询今日涨幅前10的股票,需要有效cookie
res = pywencai.get(query='今日涨幅前10', cookie='your_cookie_here')
print(res)

API参考:pywencai.get(**kwargs)

必选参数

  • query — 中文自然语言查询字符串,如 '今日涨停股票''市盈率小于20的股票'
  • cookie — 从问财网站获取的Cookie字符串(必需)

可选参数

  • sort_key — 排序字段名,如 '退市@退市日期'
  • sort_order — 排序方向:'asc'(升序)或 'desc'(降序)
  • page — 页码(默认:1
  • perpage — 每页结果数(默认和最大:100
  • loop — 设为True获取所有页;或设为整数n获取前n页
  • query_type — 查询类别(默认:'stock'),可选值:
    • stock — A股股票
    • zhishu — 指数
    • fund — 基金
    • hkstock — 港股
    • usstock — 美股
    • threeboard — 新三板
    • conbond — 可转债
    • insurance — 保险
    • futures — 期货
    • lccp — 理财产品
  • retry — 失败重试次数(默认:10
  • sleep — 分页请求间延迟秒数(默认:0
  • log — 设为True在控制台打印日志
  • pro — 设为True使用付费版(需要对应的cookie)
  • no_detail — 设为True始终返回DataFrameNone(不返回dict)
  • find — 优先返回的股票代码列表,如 ['600519', '000010']
  • request_params — 传递给requests的额外参数,如 {'proxies': proxies}

返回值

  • 列表类查询 → 返回 pandas.DataFrame
  • 详情类查询 → 返回 dict(可能包含文本和DataFrame)

使用示例

查询市盈率低于20的股票

import pywencai

# 使用自然语言查询低市盈率股票
res = pywencai.get(query='市盈率小于20的股票', cookie='xxx')
print(res)

获取退市股票按日期排序

import pywencai

# 查询退市股票,按退市日期升序排列
res = pywencai.get(
    query='退市股票',
    sort_key='退市@退市日期',  # 指定排序字段
    sort_order='asc',          # 升序
    cookie='xxx'
)
print(res)

使用代理分页获取全部数据

import pywencai

# 配置HTTP代理
proxies = {'http': 'http://proxy:8080', 'https': 'http://proxy:8080'}

# loop=True自动分页获取所有数据;log=True打印请求日志
res = pywencai.get(
    query='昨日涨幅',
    sort_order='asc',          # 升序
    loop=True,                 # 自动获取所有页面
    log=True,                  # 打印日志信息
    cookie='xxx',
    request_params={'proxies': proxies}  # 传入代理配置
)
print(res)

查询指数数据

import pywencai

# 设置query_type='zhishu'查询指数数据
res = pywencai.get(
    query='上证指数近5日涨跌幅',
    query_type='zhishu',       # 设置查询类型为指数
    cookie='xxx'
)
print(res)

查询可转债数据

import pywencai

# 设置query_type='conbond'查询可转债数据
res = pywencai.get(
    query='可转债溢价率小于10%',
    query_type='conbond',      # 设置查询类型为可转债
    cookie='xxx'
)
print(res)

使用技巧

  • 适度使用 — 高频调用可能被问财服务器封禁。
  • 始终使用最新版本pip install pywencai --upgrade
  • 查询字符串使用中文自然语言 — 像在问财网站搜索一样编写查询。
  • loop=True且设置了find时,loop被忽略,仅返回前100条结果。
  • 使用付费数据时,设置pro=True并提供有效cookie

进阶示例

查询涨停股详情

import pywencai

# 查询今日涨停股票,获取详细信息
res = pywencai.get(
    query='今日涨停的股票',
    cookie='xxx'
)
# 返回DataFrame:包含股票代码、名称、涨停时间、封单金额等
print(res)

查询连板股

import pywencai

# 查询连续涨停天数大于2天的股票
res = pywencai.get(
    query='连续涨停天数大于2天的股票',
    cookie='xxx'
)
print(res)

查询财务数据

import pywencai

# 查询ROE大于15%且营收同比增长大于20%的股票
res = pywencai.get(
    query='ROE大于15%且营收同比增长率大于20%的股票',
    cookie='xxx'
)
print(res)

# 查询市盈率小于10且市净率小于1的股票(低估值筛选)
res = pywencai.get(
    query='市盈率小于10且市净率小于1的股票',
    cookie='xxx'
)
print(res)

查询技术指标数据

import pywencai

# 查询今日MACD金叉的股票
res = pywencai.get(
    query='今日MACD金叉的股票',
    cookie='xxx'
)
print(res)

# 查询KDJ超卖信号的股票
res = pywencai.get(
    query='KDJ的J值小于0的股票',
    cookie='xxx'
)
print(res)

# 查询放量突破的股票
res = pywencai.get(
    query='今日成交量是5日均量2倍以上且涨幅大于5%的股票',
    cookie='xxx'
)
print(res)

查询资金流向数据

import pywencai

# 查询今日主力资金净流入前20的股票
res = pywencai.get(
    query='今日主力资金净流入前20的股票',
    cookie='xxx'
)
print(res)

# 查询北向资金持股比例最高的股票
res = pywencai.get(
    query='北向资金持股比例最高的前20只股票',
    cookie='xxx'
)
print(res)

查询基金数据

import pywencai

# 查询近一年收益率最高的前20只基金
res = pywencai.get(
    query='近一年收益率最高的前20只基金',
    query_type='fund',     # 设置查询类型为基金
    cookie='xxx'
)
print(res)

查询港股数据

import pywencai

# 查询港股市值最大的股票
res = pywencai.get(
    query='港股市值最大的前20只股票',
    query_type='hkstock',  # 设置查询类型为港股
    cookie='xxx'
)
print(res)

多条件选股

import pywencai

# 复杂多条件筛选:低估值+高成长+机构持仓
res = pywencai.get(
    query='市盈率小于20且营收同比增长大于30%且机构持仓比例大于10%的股票',
    cookie='xxx'
)
print(res)

# 技术面+基本面综合筛选
res = pywencai.get(
    query='今日站上20日均线且市盈率小于30且ROE大于10%的股票',
    cookie='xxx'
)
print(res)

获取历史数据

import pywencai

# 查询指定日期的数据
res = pywencai.get(
    query='2024年1月2日涨幅前10的股票',
    cookie='xxx'
)
print(res)

# 查询日期范围内的涨幅
res = pywencai.get(
    query='2024年上半年涨幅最大的前20只股票',
    cookie='xxx'
)
print(res)

完整示例:自动化选股并导出

import pywencai
import pandas as pd
import time

cookie = 'your_cookie_here'

# 定义多个筛选策略
strategies = {
    "低估值高分红": "市盈率小于15且股息率大于3%的股票",
    "高成长": "营收同比增长大于30%且净利润同比增长大于30%的股票",
    "技术突破": "今日放量突破20日均线且涨幅大于3%的股票",
    "机构关注": "近一个月机构调研次数大于3次的股票",
    "北向资金": "北向资金今日净买入前20的股票",
}

results = {}
for name, query in strategies.items():
    try:
        res = pywencai.get(query=query, cookie=cookie, no_detail=True)
        if res is not None and not res.empty:
            results[name] = res
            print(f"Strategy [{name}] selected {len(res)} stocks")
        else:
            print(f"Strategy [{name}] returned no results")
    except Exception as e:
        print(f"Strategy [{name}] query failed: {e}")
    time.sleep(2)  # 每次查询间隔2秒,避免被封禁

# 保存结果到Excel(每个策略一个工作表)
if results:
    with pd.ExcelWriter("选股结果.xlsx") as writer:
        for name, df in results.items():
            df.to_excel(writer, sheet_name=name, index=False)
    print("筛选结果已保存到 选股结果.xlsx")

常见错误处理

错误原因解决方法
Cookie expiredCookie过期重新登录问财网站获取新Cookie
返回None查询无结果或被限流检查查询语句,降低调用频率
Node.js not found未安装Node.js安装Node.js v16+
JSONDecodeError服务端返回异常增加retry参数,稍后重试
返回dict而非DataFrame查询为详情类设置no_detail=True强制返回DataFrame

Cookie管理最佳实践

import os
import pywencai

# 方法1:从环境变量读取Cookie(推荐)
cookie = os.environ.get('WENCAI_COOKIE', '')

# 方法2:从文件读取Cookie
def load_cookie(path='~/.wencai_cookie'):
    path = os.path.expanduser(path)
    if os.path.exists(path):
        with open(path) as f:
            return f.read().strip()
    return ''

# 方法3:封装查询函数,统一管理Cookie和错误处理
def query(q, **kwargs):
    cookie = load_cookie()
    try:
        return pywencai.get(
            query=q, cookie=cookie,
            no_detail=True, retry=3, sleep=1,
            **kwargs
        )
    except Exception as e:
        print(f"查询失败: {e}")
        return None

# 使用
df = query('今日涨停的股票')

进阶示例:定时监控与告警

import pywencai
import time
import datetime

cookie = 'your_cookie_here'

# 监控条件列表
alerts = [
    {'名称': '大盘跳水', '查询': '上证指数今日跌幅大于2%', '类型': 'zhishu'},
    {'名称': '涨停潮', '查询': '今日涨停股票数量', '类型': 'stock'},
    {'名称': '北向大额流出', '查询': '北向资金今日净卖出大于50亿', '类型': 'stock'},
]

def check_alerts():
    now = datetime.datetime.now().strftime('%H:%M')
    for alert in alerts:
        try:
            res = pywencai.get(
                query=alert['查询'],
                query_type=alert.get('类型', 'stock'),
                cookie=cookie, no_detail=True
            )
            if res is not None and not res.empty:
                print(f"[{now}] 告警触发 [{alert['名称']}]: {len(res)} 条结果")
        except Exception as e:
            print(f"[{now}] 查询失败 [{alert['名称']}]: {e}")
        time.sleep(2)

# 交易时间内每5分钟检查一次
while True:
    now = datetime.datetime.now()
    if 9 <= now.hour < 15:
        check_alerts()
    time.sleep(300)

社区与支持

大佬量化 (BossQuant) 维护 — 量化交易教学与策略研发团队。

微信客服: bossquant1 · Bilibili · 搜索 大佬量化 — 微信公众号 / Bilibili / 抖音

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Sendflare

通过 Sendflare SDK 发送带附件的电子邮件,管理联系人列表,支持 CC/BCC 和安全 API 认证。

Registry SourceRecently Updated
General

Playtomic - Book courts using padel-tui

This skill should be used when the user asks to "book a padel court", "find available padel courts", "search padel courts near me", "reserve a Playtomic cour...

Registry SourceRecently Updated
General

Fund Keeper

国内场外基金智能顾问 + 股票行情查询。实时估值、买卖建议、收益统计、定投计划、OCR 识图、股票 - 基金联动。支持离线模式、多数据源缓存。

Registry SourceRecently Updated