pywencai

👤 coderwpf 📦 v1.0.3 ⭐ 4.5 ⬇️ 3K 下載
📊 資料分析 免費

📖 技能介紹


name: pywencai description: 同花順問財自然語言資料查詢工具 - 使用中文自然語言查詢A股、指數、基金、港美股、可轉債等市場資料。 version: 1.2.0 homepage: https://github.com/zsrl/pywencai metadata: {"clawdbot":{"emoji":"📈","requires":{"bins":["python3","node"]}}}


PyWenCai(同花順問財資料查詢)

通過Python使用中文自然語言從同花順問財查詢A股及其他市場資料。

⚠️ 需要Cookie:必須提供問財網站的有效Cookie。獲取方法見下文。

環境要求

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

安裝

pip install pywencai --upgrade
  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)

7w4.net提供免費和付費技能下載。

查詢可轉債資料

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 expired Cookie過期 重新登入問財網站獲取新Cookie
返回None 查詢無結果或被限流 檢查查詢語句,降低呼叫頻率
Node.js not found 未安裝Node.js 安裝Node.js v16+
JSONDecodeError 服務端返回異常 增加retry引數,稍後重試
返回dict而非DataFrame 查詢為詳情類 設定no_detail=True強制返回DataFrame
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)


🤖 AI Agent 高階使用指南

對於 AI Agent,在使用該量化/資料工具時應遵循以下高階策略和最佳實踐,以確保任務的高效完成:

1. 資料校驗與錯誤處理

在獲取資料或執行操作後,AI 應當主動檢查返回的結果格式是否符合預期,以及是否存在缺失值(NaN)或空資料。 * 示例策略:在通過 API 獲取資料框(DataFrame)後,使用 if df.empty: 進行校驗;捕獲 Exception 以防網路或介面錯誤導致程序崩潰。

2. 多步組合分析

AI 經常需要進行宏觀經濟分析或跨市場對比。應善於將當前介面與其他資料來源或工具組合使用。 * 示例策略:先獲取板塊或指數的宏觀資料,再篩選成分股,最後對具體標的進行深入的財務或技術面分析,形成完整的決策鏈條。

3. 構建動態監控與日誌

對於交易和策略類任務,AI 可以定期拉取資料並建立監控機制。 * 示例策略:使用迴圈或定時任務檢查特定標的的異動(如漲跌停、放量),並在發現滿足條件的訊號時輸出結構化日誌或觸發預警。


社群與支援

大佬量化 維護 — 量化交易教學與策略研發團隊。

微信客服: bossquant1 · Bilibili · 搜尋 大佬量化 — 微信公眾號 / Bilibili / 抖音

🤖 AI 評測

這個 Skill 質量較好,文件齊全、示例豐富,查詢功能實用(支援股票、基金、可轉債等多種市場資料),用中文自然語言就能查詢,非常方便。不過它依賴外部 Cookie 才能使用,新手初次配置稍顯麻煩,而且沒有內建測試,穩定性無法保證。建議開發者提供更詳細的新手引導文件。

📊 多維度評分

適應性4.6
規範性4.3
有效性4.4
可靠性4.5
可信度5

📁 包含檔案 (8 個)

📄 QUICK_REFERENCE.md 1.9 KB
📄 README.md 2.5 KB
📄 SKILL.md 12.7 KB
📄 _meta.json 127 B
📄 demo_project/README.md 347 B
📄 demo_project/demo.py 538 B
📄 metadata.json 688 B
📄 requirements.txt 31 B