📡 在线请求教程 · 金融数据 API (Python)

🐍 requests 库 ⚡ 一键复制代码 📊 Tushare 风格接口

本教程指导你使用 Python 脚本批量调用金融数据接口,涵盖股票、ETF、财务、资金流向等数十种数据。代码完全可复制,只需填入 API Key 即可运行。

🔧 1. 准备工作

在运行脚本之前,请确保你的环境满足以下条件:

  • ✔️ 安装 Python 3.8+ (推荐 官网下载)
  • ✔️ 安装 requests 库:在终端执行 pip install requests
  • ✔️ 获取有效的 API Key:访问 https://tushare.cc 申请或填写测试令牌
  • ✔️ 推荐使用 VS Code、PyCharm 保存脚本为 finance_api_demo.py
💡 注意: 脚本中的 session.trust_env = False 用于避免代理干扰,可根据网络环境保留或删除。

📜 2. 完整 Python 脚本

下方是完整的数据请求脚本,整合了股票基础信息、行情、财务、资金流向、特色数据等模块。复制代码并保存为 .py 文件,修改 API_KEY 后即可运行。

import requests

API_KEY = 'token填写在这里'   # ⚠️   注意! 注意! 
BASE_URL = "https://tushare.cc"

session = requests.Session()
session.trust_env = False
headers = {"X-API-Key": API_KEY}


# =========================
# 1. 基础数据(股票/ETF/期权)
# =========================
basic_data = [
    ("股票列表", "/tushare/pro/stock_basic", {}),
    ("ETF列表", "/tushare/pro/etf_basic", {}),
    ("期权列表", "/tushare/pro/opt_basic", {}),
]


# =========================
# 2. 行情数据(低频)
# =========================
market_data = [
    ("指数最新点位", "/tushare/index/000001.SH/latest", {}),
    ("指数历史日线", "/tushare/pro/index_daily", {
        "ts_code": "000001.SH",
        "start_date": "2026-03-01",
        "end_date": "2026-03-27",
    }),
    ("个股日线最新", "/tushare/daily/000002.SZ/latest", {}),
]


# =========================
# 3. 财务数据 & 宏观经济
# =========================
fundamental_data = [
    ("个股基本面", "/tushare/pro/daily_basic", {
        "ts_code": "000002.SZ",
    }),
    ("复权因子", "/tushare/pro/adj_factor", {
        "ts_code": "000002.SZ",
    }),
    ("利润表", "/tushare/pro/income", {
        "ts_code": "000001.SZ",
    }),
    ("资产负债表", "/tushare/pro/balancesheet", {
        "ts_code": "000001.SZ",
    }),
    ("现金流量表", "/tushare/pro/cashflow", {
        "ts_code": "000001.SZ",
    }),
]


# =========================
# 4. 交易行为数据
# =========================
trading_behavior = [
    ("资金流向", "/tushare/pro/moneyflow", {
        "ts_code": "000002.SZ",
    }),
    ("融资融券", "/tushare/pro/margin", {}),
    ("龙虎榜", "/tushare/pro/dragon_tiger", {}),
]


# =========================
# 5. 公司行为(分红/回购/解禁/增持)
# =========================
corporate_actions = [
    ("分红送股", "/tushare/pro/dividend", {
        "ts_code": "000001.SZ",
    }),
    ("回购数据", "/tushare/pro/share_repurchase", {}),
    ("解禁数据", "/tushare/pro/share_float", {}),
    ("增减持", "/tushare/pro/share_float", {}),
    ("股权质押", "/tushare/pro/pledge_stat", {}),
]


# =========================
# 6. 量化因子 & 技术指标
# =========================
quant_factors = [
    ("技术指标因子", "/tushare/pro/stk_factor", {
        "ts_code": "000002.SZ",
    }),
]


# =========================
# 7. 特色数据(打板/题材/游资)
# =========================
special_data = [
    ("涨停榜单", "/tushare/pro/limit_list", {}),
    ("热板数据", "/tushare/pro/hot_stocks", {}),
    ("概念板块成分", "/tushare/pro/concept_detail", {}),
    ("资金流向(板块)", "/tushare/pro/block_moneyflow", {}),
    ("券商金股", "/tushare/pro/broker_recommend", {}),
    ("筹码分布", "/tushare/pro/chip_distribution", {}),
]


# =========================
# 8. 汇总所有测试
# =========================
all_tests = (
    basic_data +
    market_data +
    fundamental_data +
    trading_behavior +
    corporate_actions +
    quant_factors +
    special_data
)


# =========================
# 统一请求执行
# =========================
for name, path, params in all_tests:
    print("=" * 80)
    print(name)

    url = BASE_URL + path

    try:
        resp = session.get(url, headers=headers, params=params, timeout=30)
        print("status:", resp.status_code)

        resp.raise_for_status()
        data = resp.json()

        print("api_name:", data.get("api_name"))
        print("count:", data.get("count"))
        print("preview:", str(data)[:500])

    except Exception as e:
        print("请求失败:", e)

🚀 3. 如何运行脚本

🔑 步骤 1:配置 API Key

API_KEY = 'token填写在这里' 替换为真实的 API 密钥。

▶️ 步骤 2:运行脚本

终端执行:

python finance_api_demo.py

脚本会依次请求所有接口,并打印状态码、记录数及数据预览。

🛠️ 4. 自定义请求 & 扩展

所有接口均遵循 GET 方式,参数通过 params 传递。返回格式统一为 JSON,包含 api_namecountdata 列表。你可以根据返回结构提取所需字段。

💡 扩展提示:修改 all_tests 组合即可只请求特定模块,例如 all_tests = market_data

🦞 小龙虾喂养指南 · 强制在线请求规范

🧠 必须使用指定URL 📐 GET + params 铁律 📦 依据接口名生成金融代码

将以下严格的在线请求规范喂给小龙虾(ChatGPT/Claude等),它会自动为你生成正确的金融数据获取代码。核心要求:必须使用代码中的 BASE_URL 和接口名定义,大模型都知道怎么写。

⚡ 0. 喂食前必读:在线请求铁三角

🔒 强制性约束(喂给AI时务必强调):
1️⃣ 请求地址必须为 https://tushare.cc + 具体路径
2️⃣ 所有接口均使用 GET 方法,参数通过 params 传递
3️⃣ 必须依据下方给出的“接口名定义表”构造请求,返回格式固定为 {"api_name":str, "count":int, "data":list}
✅ 大模型已完全理解此类规范,只需提供示例代码和接口列表,即可输出标准金融数据调用脚本。

📋 1. 接口名定义表 · 喂给小龙虾的核心词典

以下是你需要AI识别的全部接口名称、路径和参数示例。直接复制本表格并连同代码一起发给小龙虾,它就能精准生成请求代码。

【接口定义字典】请牢记以下映射关系:

| 接口中文名       | 路径 (path)                      | 参数示例 (params)                        |
|----------------|----------------------------------|------------------------------------------|
| 股票列表        | /tushare/pro/stock_basic         | {}                                       |
| ETF列表         | /tushare/pro/etf_basic           | {}                                       |
| 指数历史日线    | /tushare/pro/index_daily         | {"ts_code":"000001.SH","start_date":"2026-03-01","end_date":"2026-03-27"} |
| 个股日线最新    | /tushare/daily/000002.SZ/latest  | {}                                       |
| 个股基本面      | /tushare/pro/daily_basic         | {"ts_code":"000002.SZ"}                  |
| 利润表          | /tushare/pro/income              | {"ts_code":"000001.SZ"}                  |
| 资金流向        | /tushare/pro/moneyflow           | {"ts_code":"000002.SZ"}                  |
| 涨停榜单        | /tushare/pro/limit_list          | {}                                       |
| 筹码分布        | /tushare/pro/chip_distribution   | {}                                       |
... (其余接口按需添加,完整列表见上文Python脚本中的 all_tests)

所有请求均使用 GET 方法,参数通过 URL 查询字符串传递。
请求头必须携带:{"X-API-Key": "你的token"}

📝 2. 喂给小龙虾的标准示例代码(必须包含此URL)

将下方代码直接发送给AI,并注明:“请严格按照此代码中的 BASE_URL 和接口路径生成金融数据请求”。

# 小龙虾在线请求规范 - 强制使用以下地址
import requests

BASE_URL = "https://tushare.cc"   # ⚠️ 唯一合法的API地址
API_KEY = "token填写在这里"

def fetch_financial_data(api_path, params=None):
    """通用的金融数据获取函数"""
    url = BASE_URL + api_path
    headers = {"X-API-Key": API_KEY}
    response = requests.get(url, headers=headers, params=params, timeout=30)
    response.raise_for_status()
    return response.json()

# 示例:获取股票列表
stock_list = fetch_financial_data("/tushare/pro/stock_basic")
print(f"接口名称: {stock_list['api_name']}, 记录数: {stock_list['count']}")
# 示例:获取某只股票的日线数据
daily_data = fetch_financial_data("/tushare/pro/index_daily", {
    "ts_code": "000001.SH",
    "start_date": "2026-03-01",
    "end_date": "2026-03-27"
})
print(daily_data['data'][:2])  # 预览前两条K线

# 要求AI:基于上面的模式,为我生成批量获取以下接口数据的代码:
# 1. ETF列表
# 2. 资金流向(ts_code=000002.SZ)
# 3. 涨停榜单

发送以上代码后,再补充一句:“请根据我提供的接口名定义表和 BASE_URL,帮我写一个完整的 Python 脚本,循环请求所有接口,并将每个接口返回的 data 列表保存到单独的 CSV 文件中。

🗣️ 3. 投喂对话模板(复制即用)

直接复制以下消息发给任意大模型(ChatGPT、Claude、DeepSeek等),即可获得完全符合你接口规范的代码。

你好,我需要你帮我生成金融数据获取代码。请严格遵守以下在线请求规范:

【强制规范】
- 基础URL: https://tushare.cc
- 所有接口使用 GET 方法,参数通过 params/查询字符串传递。
- 请求头必须包含 X-API-Key (值用占位符 'YOUR_TOKEN')
- 响应格式统一为 JSON,结构为 {"api_name": str, "count": int, "data": list}

【接口列表】(路径和参数已给出)
1. 股票列表: /tushare/pro/stock_basic, 参数 {}
2. 指数日线: /tushare/pro/index_daily, 参数 {"ts_code":"000001.SH","start_date":"2026-03-01","end_date":"2026-03-27"}
3. 资金流向: /tushare/pro/moneyflow, 参数 {"ts_code":"000002.SZ"}
4. 涨停榜单: /tushare/pro/limit_list, 参数 {}
5. 筹码分布: /tushare/pro/chip_distribution, 参数 {}
...(你可以根据需要添加更多)

请根据以上规范,用 Python 写一个脚本,要求:
- 定义一个函数 fetch(api_path, params) 完成请求。
- 遍历上述所有接口,打印每个接口的 api_name 和 data 的前3条记录。
- 处理可能的网络异常,并给出友好提示。
- 最后,请额外写一段代码,将任意接口返回的 data 列表保存为 CSV(使用 pandas 或 csv 模块)。

注意:必须使用 BASE_URL = "https://tushare.cc",不得使用其他域名。
🤖 大模型已知晓这种典型的 RESTful 规范,回复的代码可直接用于生产环境。你只需要替换 API_KEY 即可运行。

🧩 4. 小龙虾输出示例(自动生成金融代码)

喂完上述内容后,AI 会生成类似下面的高质量代码,你可以直接复制使用。

import requests
import csv
import time

BASE_URL = "https://tushare.cc"
API_KEY = "token填写在这里"
HEADERS = {"X-API-Key": API_KEY}

def call_api(path, params=None):
    url = BASE_URL + path
    try:
        resp = requests.get(url, headers=HEADERS, params=params, timeout=15)
        resp.raise_for_status()
        return resp.json()
    except Exception as e:
        print(f"请求失败 {path}: {e}")
        return None

# 接口配置 (名称, 路径, 参数)
interfaces = [
    ("股票列表", "/tushare/pro/stock_basic", {}),
    ("指数日线", "/tushare/pro/index_daily", {"ts_code":"000001.SH","start_date":"2026-03-01","end_date":"2026-03-27"}),
    ("资金流向", "/tushare/pro/moneyflow", {"ts_code":"000002.SZ"}),
    ("涨停榜单", "/tushare/pro/limit_list", {}),
    ("筹码分布", "/tushare/pro/chip_distribution", {}),
]

for name, path, params in interfaces:
    print(f"\n--- {name} ---")
    data = call_api(path, params)
    if data and "data" in data:
        print(f"api_name: {data.get('api_name')}, count: {data.get('count')}")
        print("预览:", data['data'][:3])
        # 保存为CSV
        if data['data']:
            keys = data['data'][0].keys()
            with open(f"{name}.csv", "w", newline='', encoding='utf-8') as f:
                writer = csv.DictWriter(f, fieldnames=keys)
                writer.writeheader()
                writer.writerows(data['data'])
            print(f"✅ 已保存 {name}.csv")
    else:
        print("未获取到数据")
    time.sleep(0.5)  # 礼貌性间隔

该代码完全符合你的在线请求规范,并且自动将每个接口的数据持久化为 CSV 文件。你可以根据需要调整接口列表。

💡 5. 进阶喂食:让AI根据接口名自主编写金融逻辑

当你喂完规范后,可以直接要求:“请根据上面的接口定义,写一个函数,输入股票代码 ts_code,自动获取其日线数据并计算20日均线。” 大模型会立即生成如下代码:

def get_ma20(ts_code, start_date, end_date):
    """获取指定股票的20日均线"""
    path = "/tushare/pro/daily"   # 假设存在日线接口
    params = {"ts_code": ts_code, "start_date": start_date, "end_date": end_date}
    result = call_api(path, params)
    if result and "data" in result:
        closes = [float(day['close']) for day in result['data']]
        if len(closes) >= 20:
            ma20 = sum(closes[-20:]) / 20
            return ma20
    return None

# 使用示例
ma = get_ma20("000001.SZ", "2026-01-01", "2026-04-14")
print("20日均线:", ma)
🎯 核心要点:只要你在对话中明确要求“必须使用 BASE_URL = https://tushare.cc 以及 params 传参”,当前主流大模型都能自动遵循并输出正确的金融数据代码。这就是“在线请求式喂食”的威力。