{"id":"63224ea4-6cc0-4fba-b93c-bbf9600e7d57","shortId":"rH5kQj","kind":"skill","title":"pywencai","tagline":"同花顺问财数据查询：使用中文自然语言查询A股、指数、基金、港美股、可转债等市场数据；当用户需要通过自然语言从问财获取选股、财务、资金流、技术指标等数据时使用。","description":"# PyWenCai（同花顺问财数据查询）\n\n通过Python使用中文自然语言从[同花顺问财](https://www.iwencai.com)查询A股及其他市场数据。\n\n> ⚠️ **需要Cookie**：必须提供问财网站的有效Cookie。获取方法见下文。\n\n## 环境要求\n\n- **Python 3.7+**\n- **Node.js v16+**（pywencai 内部执行 JS 代码）\n- **pip** package manager\n\n## 安装\n\n```bash\npip install pywencai --upgrade\n```\n\n## 如何获取Cookie\n\n若存在环境变量 `WENCAI_COOKIE`，可直接使用；若调用失败，则按如下步骤重新获取：\n\n1. 在浏览器中打开 https://www.iwencai.com 并登录。\n2. 按F12打开开发者工具 → 切换到Network标签。\n3. 在问财页面执行任意查询。\n4. 找到发往`iwencai.com`的请求，从请求头中复制`Cookie`值。\n5. 将该字符串作为`cookie`参数使用。\n\n## Cookie管理\n\n优先使用环境变量或文件管理Cookie，避免硬编码：\n\n```python\nimport os\nimport pywencai\n\n# 方法1：从环境变量读取Cookie（推荐）\ncookie = os.environ.get('WENCAI_COOKIE', '')\n\n# 方法2：从文件读取Cookie\ndef load_cookie(path='~/.wencai_cookie'):\n    path = os.path.expanduser(path)\n    if os.path.exists(path):\n        with open(path) as f:\n            return f.read().strip()\n    return ''\n\n# 方法3：封装查询函数，统一管理Cookie和错误处理\ndef query(q, **kwargs):\n    cookie = load_cookie()\n    try:\n        return pywencai.get(\n            query=q, cookie=cookie,\n            no_detail=True, retry=3, sleep=1,\n            **kwargs\n        )\n    except Exception as e:\n        print(f\"查询失败: {e}\")\n        return None\n\n# 使用\ndf = query('今日涨停的股票')\n```\n\n## 基本用法\n\n```python\nimport pywencai\n\n# 查询今日涨幅前10的股票，需要有效cookie\nres = pywencai.get(query='今日涨幅前10', cookie='your_cookie_here')\nprint(res)\n```\n\n## API参考：`pywencai.get(**kwargs)`\n\n### 必选参数\n\n- **query** — 中文自然语言查询字符串，如 `'今日涨停股票'`、`'市盈率小于20的股票'`\n- **cookie** — 从问财网站获取的Cookie字符串（必需）\n\n### 可选参数\n\n- **sort_key** — 排序字段名，如 `'退市@退市日期'`\n- **sort_order** — 排序方向：`'asc'`（升序）或 `'desc'`（降序）\n- **page** — 页码（默认：`1`）\n- **perpage** — 每页结果数（默认和最大：`100`）\n- **loop** — 设为`True`获取所有页；或设为整数`n`获取前n页\n- **query_type** — 查询类别（默认：`'stock'`），可选值：\n\n| 值 | 说明 |\n|---|---|\n| `stock` | A股股票 |\n| `zhishu` | 指数 |\n| `fund` | 基金 |\n| `hkstock` | 港股 |\n| `usstock` | 美股 |\n| `threeboard` | 新三板 |\n| `conbond` | 可转债 |\n| `insurance` | 保险 |\n| `futures` | 期货 |\n| `lccp` | 理财产品 |\n\n- **retry** — 失败重试次数（默认：`10`）\n- **sleep** — 分页请求间延迟秒数（默认：`0`）\n- **log** — 设为`True`在控制台打印日志\n- **pro** — 设为`True`使用付费版（需要对应的cookie）\n- **no_detail** — 设为`True`始终返回`DataFrame`或`None`（不返回dict）\n- **find** — 优先返回的股票代码列表，如 `['600519', '000010']`\n- **request_params** — 传递给`requests`的额外参数，如 `{'proxies': proxies}`\n\n### 返回值\n\n- **列表类查询** → 返回 `pandas.DataFrame`\n- **详情类查询** → 返回 `dict`（可能包含文本和DataFrame）\n\n## 使用示例\n\n### 按市场类型查询\n\n```python\nimport pywencai\n\n# A股股票（默认）\nres = pywencai.get(query='今日涨停的股票', cookie=cookie)\n\n# 指数数据\nres = pywencai.get(query='上证指数近5日涨跌幅', query_type='zhishu', cookie=cookie)\n\n# 基金数据\nres = pywencai.get(query='近一年收益率最高的前20只基金', query_type='fund', cookie=cookie)\n\n# 可转债数据\nres = pywencai.get(query='可转债溢价率小于10%', query_type='conbond', cookie=cookie)\n\n# 港股数据\nres = pywencai.get(query='港股市值最大的前20只股票', query_type='hkstock', cookie=cookie)\n```\n\n### 基本面选股\n\n```python\n# 估值筛选\nres = pywencai.get(query='市盈率小于20的股票', cookie=cookie)\nres = pywencai.get(query='市盈率小于10且市净率小于1的股票', cookie=cookie)\n\n# 财务指标\nres = pywencai.get(query='ROE大于15%且营收同比增长率大于20%的股票', cookie=cookie)\n\n# 多条件综合筛选\nres = pywencai.get(query='市盈率小于20且营收同比增长大于30%且机构持仓比例大于10%的股票', cookie=cookie)\nres = pywencai.get(query='今日站上20日均线且市盈率小于30且ROE大于10%的股票', cookie=cookie)\n```\n\n### 技术面与资金流\n\n```python\n# 技术信号\nres = pywencai.get(query='今日MACD金叉的股票', cookie=cookie)\nres = pywencai.get(query='KDJ的J值小于0的股票', cookie=cookie)\nres = pywencai.get(query='今日成交量是5日均量2倍以上且涨幅大于5%的股票', cookie=cookie)\n\n# 资金流向\nres = pywencai.get(query='今日主力资金净流入前20的股票', cookie=cookie)\nres = pywencai.get(query='北向资金持股比例最高的前20只股票', cookie=cookie)\n```\n\n### 排序、分页与代理\n\n```python\n# 按指定字段排序\nres = pywencai.get(\n    query='退市股票',\n    sort_key='退市@退市日期',\n    sort_order='asc',\n    cookie=cookie\n)\n\n# 自动分页获取全部数据（使用代理）\nproxies = {'http': 'http://proxy:8080', 'https': 'http://proxy:8080'}\nres = pywencai.get(\n    query='昨日涨幅',\n    loop=True,\n    log=True,\n    cookie=cookie,\n    request_params={'proxies': proxies}\n)\n```\n\n### 历史数据查询\n\n```python\n# 指定日期\nres = pywencai.get(query='2024年1月2日涨幅前10的股票', cookie=cookie)\n\n# 日期范围\nres = pywencai.get(query='2024年上半年涨幅最大的前20只股票', cookie=cookie)\n```\n\n### 完整示例：多策略自动化选股并导出\n\n```python\nimport pywencai\nimport pandas as pd\nimport time\n\ncookie = os.environ.get('WENCAI_COOKIE', '')\n\n# 定义多个筛选策略\nstrategies = {\n    \"低估值高分红\": \"市盈率小于15且股息率大于3%的股票\",\n    \"高成长\": \"营收同比增长大于30%且净利润同比增长大于30%的股票\",\n    \"技术突破\": \"今日放量突破20日均线且涨幅大于3%的股票\",\n    \"机构关注\": \"近一个月机构调研次数大于3次的股票\",\n    \"北向资金\": \"北向资金今日净买入前20的股票\",\n}\n\nresults = {}\nfor name, query in strategies.items():\n    try:\n        res = pywencai.get(query=query, cookie=cookie, no_detail=True)\n        if res is not None and not res.empty:\n            results[name] = res\n            print(f\"策略 [{name}] 选出 {len(res)} 只股票\")\n        else:\n            print(f\"策略 [{name}] 无结果\")\n    except Exception as e:\n        print(f\"策略 [{name}] 查询失败: {e}\")\n    time.sleep(2)  # 每次查询间隔2秒，避免被封禁\n\n# 保存结果到Excel（每个策略一个工作表）\nif results:\n    with pd.ExcelWriter(\"选股结果.xlsx\") as writer:\n        for name, df in results.items():\n            df.to_excel(writer, sheet_name=name, index=False)\n    print(\"筛选结果已保存到 选股结果.xlsx\")\n```\n\n## 使用技巧\n\n- **适度使用** — 高频调用可能被问财服务器封禁，建议每次查询间隔 ≥ 2秒。\n- 始终使用**最新版本**：`pip install pywencai --upgrade`\n- 查询字符串使用**中文自然语言** — 像在问财网站搜索一样编写查询。\n- 当`loop=True`且设置了`find`时，`loop`被忽略，仅返回前100条结果。\n- 使用付费数据时，设置`pro=True`并提供有效`cookie`。\n\n## 常见错误处理\n\n| 错误 | 原因 | 解决方法 |\n|------|------|----------|\n| `Cookie expired` | Cookie过期 | 重新登录问财网站获取新Cookie |\n| 返回`None` | 查询无结果或被限流 | 检查查询语句，降低调用频率 |\n| `Node.js not found` | 未安装Node.js | 安装Node.js v16+ |\n| `JSONDecodeError` | 服务端返回异常 | 增加`retry`参数，稍后重试 |\n| 返回dict而非DataFrame | 查询为详情类 | 设置`no_detail=True`强制返回DataFrame |\n\n## 规则\n\n- 使用此 Skill 前，确认用户需要的是**问财自然语言数据查询**，而非纯行情 API（如 baostock）或回测框架（如 backtrader/rqalpha）。\n- 示例中的 `cookie` 参数应统一使用环境变量 `WENCAI_COOKIE` 或 Cookie 文件管理方式，**不要硬编码 Cookie 字符串**。\n- 始终设置 `no_detail=True` 以确保返回 `DataFrame`（除非用户明确需要详情 dict）。\n- 批量查询时必须设置 `sleep` 参数（建议 ≥ 2秒），避免被服务器封禁。\n- 查询字符串应使用中文自然语言，与问财网站搜索框的输入方式一致。","tags":["pywencai","finance","quant","skills","lzwme","agent-skills"],"capabilities":["skill","source-lzwme","skill-pywencai","topic-agent-skills","topic-skills"],"categories":["finance-quant-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/lzwme/finance-quant-skills/pywencai","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add lzwme/finance-quant-skills","source_repo":"https://github.com/lzwme/finance-quant-skills","install_from":"skills.sh"}},"qualityScore":"0.469","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 39 github stars · SKILL.md body (5,861 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:58:28.842Z","embedding":null,"createdAt":"2026-05-09T01:05:18.705Z","updatedAt":"2026-05-18T18:58:28.842Z","lastSeenAt":"2026-05-18T18:58:28.842Z","tsv":"'/.wencai_cookie':87 '0':235 '000010':258 '1':46,126,188 '10':231 '100':192 '2':50,542 '2024年1月2日涨幅前10的股票':449 '2024年上半年涨幅最大的前20只股票':456 '2秒':576,671 '3':53,124 '3.7':23 '4':55 '5':62 '600519':257 '8080':425,428 'api':642 'api参考':158 'asc':180,417 'a股股票':209,280 'backtrader/rqalpha':647 'baostock':644 'bash':34 'conbond':220,315 'cooki':42,60,64,77,80,85,110,112,118,119,152,154,167,286,287,296,297,306,307,316,317,326,327,335,336,341,342,350,351,359,360,366,367,375,376,381,382,388,389,395,396,401,402,418,419,437,438,450,451,457,458,470,473,501,502,600,605,649,652,654,657 'cookie管理':66 'cookie过期':607 'datafram':250,664 'def':83,106 'desc':183 'detail':121,246,504,632,661 'df':139,557 'df.to':560 'dict':273,666 'e':131,135,534,540 'els':525 'excel':561 'except':128,129,531,532 'expir':606 'f':98,133,518,527,536 'f.read':100 'fals':567 'find':254,590 'found':616 'fund':212,305 'futur':224 'hkstock':214,325 'http':423 'https':426 'import':70,72,144,278,462,464,468 'index':566 'instal':36,580 'insur':222 'iwencai.com':57 'js':28,618,620 'jsondecodeerror':622 'kdj的j值小于0的股票':380 'key':172,412 'kwarg':109,127,160 'lccp':226 'len':522 'load':84,111 'log':236,435 'loop':193,433,587,592 'manag':32 'n':198 'name':492,515,520,529,538,556,564,565 'node.js':24,614 'none':137,252,510,610 'open':95 'order':178,416 'os':71 'os.environ.get':78,471 'os.path.exists':92 'os.path.expanduser':89 'packag':31 'page':185 'panda':465 'pandas.dataframe':270 'param':260,440 'path':86,88,90,93,96 'pd':467 'pd.excelwriter':550 'perpag':189 'pip':30,35,579 'print':132,156,517,526,535,568 'pro':240,597 'proxi':265,266,422,424,427,441,442 'python':22,69,143,277,329,369,405,444,461 'pywencai':1,12,26,37,73,145,279,463,581 'pywencai.get':115,149,159,283,290,300,310,320,332,338,345,354,362,372,378,384,392,398,408,430,447,454,498 'q':108,117 'queri':107,116,140,150,162,200,284,291,293,301,303,311,313,321,323,333,339,346,355,363,373,379,385,393,399,409,431,448,455,493,499,500 'request':259,262,439 'res':148,157,282,289,299,309,319,331,337,344,353,361,371,377,383,391,397,407,429,446,453,497,507,516,523 'res.empty':513 'result':490,514,548 'results.items':559 'retri':123,228,625 'return':99,102,114,136 'roe大于15':347 'sheet':563 'skill':637 'skill-pywencai' 'sleep':125,232,668 'sort':171,177,411,415 'source-lzwme' 'stock':204,208 'strategi':475 'strategies.items':495 'strip':101 'threeboard':218 'time':469 'time.sleep':541 'topic-agent-skills' 'topic-skills' 'tri':113,496 'true':122,195,238,242,248,434,436,505,588,598,633,662 'type':201,294,304,314,324 'upgrad':38,582 'usstock':216 'v16':25,621 'wencai':41,79,472,651 'writer':554,562 'www.iwencai.com':16,48 'xlsx':552,571 'zhishu':210,295 '上证指数近5日涨跌幅':292 '不要硬编码':656 '不返回dict':253 '与问财网站搜索框的输入方式一致':674 '且净利润同比增长大于30':481 '且机构持仓比例大于10':357 '且营收同比增长率大于20':348 '且设置了':589 '中文自然语言':584 '中文自然语言查询字符串':163 '仅返回前100条结果':594 '今日macd金叉的股票':374 '今日主力资金净流入前20的股票':394 '今日成交量是5日均量2倍以上且涨幅大于5':386 '今日放量突破20日均线且涨幅大于3':484 '今日涨停的股票':141,285 '今日涨停股票':165 '今日涨幅前10':151 '今日站上20日均线且市盈率小于30且roe大于10':364 '从文件读取cooki':82 '从环境变量读取cooki':75 '从请求头中复制':59 '从问财网站获取的cookie字符串':168 '代码':29 '以确保返回':663 '优先使用环境变量或文件管理cooki':67 '优先返回的股票代码列表':255 '传递给':261 '估值筛选':330 '低估值高分红':476 '使用':138 '使用中文自然语言查询a股':3 '使用付费数据时':595 '使用付费版':243 '使用代理':421 '使用技巧':572 '使用此':636 '使用示例':275 '保存结果到excel':545 '保险':223 '值':61,206 '像在问财网站搜索一样编写查询':585 '内部执行':27 '分页与代理':404 '分页请求间延迟秒数':233 '切换到network标签':52 '列表类查询':268 '则按如下步骤重新获取':45 '前':638 '北向资金':488 '北向资金今日净买入前20的股票':489 '北向资金持股比例最高的前20只股票':400 '升序':181 '历史数据查询':443 '原因':603 '参数':626,669 '参数使用':65 '参数应统一使用环境变量':650 '只股票':524 '可直接使用':43 '可能包含文本和datafram':274 '可转债':221 '可转债数据':308 '可转债溢价率小于10':312 '可转债等市场数据':7 '可选值':205 '可选参数':170 '同花顺问财':15 '同花顺问财数据查询':2,13 '在控制台打印日志':239 '在浏览器中打开':47 '在问财页面执行任意查询':54 '基本用法':142 '基本面选股':328 '基金':5,213 '基金数据':298 '增加':624 '多条件综合筛选':352 '多策略自动化选股并导出':460 '失败重试次数':229 '如':164,174,256,264,643,646 '如何获取cooki':39 '始终使用':577 '始终设置':659 '始终返回':249 '字符串':658 '安装':33 '安装node':619 '完整示例':459 '定义多个筛选策略':474 '封装查询函数':104 '将该字符串作为':63 '市盈率小于10且市净率小于1的股票':340 '市盈率小于15且股息率大于3':477 '市盈率小于20且营收同比增长大于30':356 '市盈率小于20的股票':166,334 '常见错误处理':601 '并提供有效':599 '并登录':49 '建议':670 '建议每次查询间隔':575 '强制返回datafram':634 '当':586 '当用户需要通过自然语言从问财获取选股':8 '必选参数':161 '必需':169 '必须提供问财网站的有效cooki':19 '或':182,251,653 '或回测框架':645 '或设为整数':197 '批量查询时必须设置':667 '找到发往':56 '技术信号':370 '技术指标等数据时使用':11 '技术突破':483 '技术面与资金流':368 '指定日期':445 '指数':4,211 '指数数据':288 '按f12打开开发者工具':51 '按市场类型查询':276 '按指定字段排序':406 '排序':403 '排序字段名':173 '排序方向':179 '推荐':76 '文件管理方式':655 '新三板':219 '方法1':74 '方法2':81 '方法3':103 '无结果':530 '日期范围':452 '时':591 '昨日涨幅':432 '最新版本':578 '服务端返回异常':623 '期货':225 '未安装node':617 '机构关注':486 '查询a股及其他市场数据':17 '查询为详情类':629 '查询今日涨幅前10的股票':146 '查询失败':134,539 '查询字符串使用':583 '查询字符串应使用中文自然语言':673 '查询无结果或被限流':611 '查询类别':202 '检查查询语句':612 '每个策略一个工作表':546 '每次查询间隔2秒':543 '每页结果数':190 '港美股':6 '港股':215 '港股市值最大的前20只股票':322 '港股数据':318 '环境要求':21 '理财产品':227 '的股票':349,358,365,387,478,482,485 '的请求':58 '的额外参数':263 '确认用户需要的是':639 '示例中的':648 '稍后重试':627 '策略':519,528,537 '筛选结果已保存到':569 '统一管理cookie和错误处理':105 '美股':217 '而非纯行情':641 '自动分页获取全部数据':420 '若存在环境变量':40 '若调用失败':44 '获取前n页':199 '获取所有页':196 '获取方法见下文':20 '营收同比增长大于30':480 '被忽略':593 '规则':635 '解决方法':604 '设为':194,237,241,247 '设置':596,630 '详情类查询':271 '说明':207 '财务':9 '财务指标':343 '资金流':10 '资金流向':390 '近一个月机构调研次数大于3次的股票':487 '近一年收益率最高的前20只基金':302 '返回':269,272,609 '返回dict而非datafram':628 '返回值':267 '退市':175,413 '退市日期':176,414 '退市股票':410 '适度使用':573 '选出':521 '选股结果':551,570 '通过python使用中文自然语言从':14 '避免硬编码':68 '避免被封禁':544 '避免被服务器封禁':672 '重新登录问财网站获取新cooki':608 '错误':602 '问财自然语言数据查询':640 '降低调用频率':613 '降序':184 '除非用户明确需要详情':665 '需要cooki':18 '需要对应的cooki':244 '需要有效cooki':147 '页码':186 '高成长':479 '高频调用可能被问财服务器封禁':574 '默认':187,203,230,234,281 '默认和最大':191","prices":[{"id":"8215c4b3-e9a1-4117-a09c-4b55728d90c5","listingId":"63224ea4-6cc0-4fba-b93c-bbf9600e7d57","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"lzwme","category":"finance-quant-skills","install_from":"skills.sh"},"createdAt":"2026-05-09T01:05:18.705Z"}],"sources":[{"listingId":"63224ea4-6cc0-4fba-b93c-bbf9600e7d57","source":"github","sourceId":"lzwme/finance-quant-skills/pywencai","sourceUrl":"https://github.com/lzwme/finance-quant-skills/tree/main/skills/pywencai","isPrimary":false,"firstSeenAt":"2026-05-09T01:05:18.705Z","lastSeenAt":"2026-05-18T18:58:28.842Z"}],"details":{"listingId":"63224ea4-6cc0-4fba-b93c-bbf9600e7d57","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"lzwme","slug":"pywencai","github":{"repo":"lzwme/finance-quant-skills","stars":39,"topics":["agent-skills","skills"],"license":null,"html_url":"https://github.com/lzwme/finance-quant-skills","pushed_at":"2026-05-18T07:34:02Z","description":"一个面向金融量化交易领域的 Agent Skills 技能维护仓库，主要聚焦A股量化交易。","skill_md_sha":"d82a2a8c09e9de9127b881471163bd33f0407d4d","skill_md_path":"skills/pywencai/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/lzwme/finance-quant-skills/tree/main/skills/pywencai"},"layout":"multi","source":"github","category":"finance-quant-skills","frontmatter":{"name":"pywencai","description":"同花顺问财数据查询：使用中文自然语言查询A股、指数、基金、港美股、可转债等市场数据；当用户需要通过自然语言从问财获取选股、财务、资金流、技术指标等数据时使用。"},"skills_sh_url":"https://skills.sh/lzwme/finance-quant-skills/pywencai"},"updatedAt":"2026-05-18T18:58:28.842Z"}}