Python 批量查询行情时,如何快速找出没有返回数据的股票?

python 股票实时数据接口_股票行情实时数据接口 广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!sina股票实时数据接口eg:http:hq.sinajs.cnlist=sh600389返回gb2312编码的内容:var hq_str_sh600389=江山股份,15.31,15.74,15.68,16.02,15.16,15.68,15.69,4044916,62900903... 阅读详情

一句话回答

批量查询行情时,不能只判断接口是否调用成功,还需要核对请求标的集合与实际返回标的集合。最直接的方法是建立请求清单,从 QuantDash SDK 返回的批量 K 线数据中提取实际标的代码,通过集合差集找出未返回的标的,再结合数据结构、查询条件和单标的复查判断原因。这一步能够防止缺失行情的股票在后续因子计算和选股过程中被悄悄遗漏。

为什么会有这个问题 / 传统做法有什么问题?

在量化选股任务中,一次查询几十只甚至更多股票的行情很常见。

例如,假设某个策略需要获取以下股票最近 20 根日 K 线:

  • 600519.SH
  • 000001.SZ
  • 600036.SH
  • 601318.SH
  • 000858.SZ

正常情况下,我们希望每只股票都能返回相应的行情数据。

但实际运行时,需要考虑停牌、上市时间、查询范围、数据覆盖情况以及部分请求失败等因素。批量调用完成,并不意味着每个输入标的都有符合预期的数据。

假设请求集合为:

S = {A, B, C, D, E}

返回结果中实际能够识别的标的集合为:

R = {A, B, D, E}

那么未返回的标的集合就是:

M = S - R = {C}

这个集合运算并不复杂,真正需要注意的是:如何准确地从接口返回对象中提取标的代码。

如果批量数据被转换成一个 DataFrame,不能在没有验证的情况下直接认定它一定包含名为 symbol 的字段。不同 SDK 版本、接口返回模式或数据组织方式可能存在差异。

传统做法通常是:

  1. 调用批量接口。
  2. 判断返回 DataFrame 是否为空。
  3. 如果不为空,就继续计算因子。

问题在于,第三步可能掩盖部分标的缺失。

例如,策略原本需要 5 只股票的数据,实际只有 4 只股票参与计算。即使最终结果能够输出,也不代表选股样本完整。

更合理的方式,是在统一的数据接入层增加集合对账和缺失标的记录。

分步骤解决:使用 QuantDash 进行实践

第 1 步:安装 SDK 并初始化客户端

首先安装 QuantDash Python SDK:

# 在终端执行
# pip install quantdash

运行以下 Python 代码初始化客户端:

import os

from quantdash import QuantDash

api_key = os.getenv("QUANTDASH_API_KEY")

if not api_key:
    raise RuntimeError(
        "请先设置 QUANTDASH_API_KEY 环境变量"
    )

qd = QuantDash(api_key=api_key)

API Key 通过环境变量读取,避免直接写入代码仓库。

这里需要注意,客户端初始化成功不代表后续行情请求一定成功。网络错误、接口权限以及数据查询条件仍然需要单独处理。

第 2 步:批量获取历史 K 线数据

使用 qd.klines.batch() 查询多只股票的日 K 线。

import pandas as pd

symbols = [
    "600519.SH",
    "000001.SZ",
    "600036.SH",
    "601318.SH",
    "000858.SZ",
]

try:
    batch_df = qd.klines.batch(
        symbols,
        period="1d",
        count=20,
        to_dataframe=True,
        show_progress=True,
    )
except Exception as exc:
    raise RuntimeError(
        f"批量行情查询失败: {exc}"
    ) from exc

if not isinstance(batch_df, pd.DataFrame):
    raise TypeError(
        "返回结果不是 DataFrame,请检查接口返回结构"
    )

if batch_df.empty:
    print("批量结果为空,所有请求标的均需进一步核查")
else:
    print("返回行数:", len(batch_df))
    print("实际字段:", batch_df.columns.tolist())
    print(batch_df.head())

这里几个参数的作用分别是:

  • period=“1d”:获取日 K 线。
  • count=20:请求最近 20 根 K 线,不代表一定返回 20 行。
  • to_dataframe=True:请求以 DataFrame 形式返回,方便后续数据分析。
  • show_progress=True:启用接口支持的进度展示,不应将进度完成等同于所有标的成功返回。

需要特别说明,本文没有预设批量结果的标的字段名称。应先查看实际返回的列和索引,再决定如何提取标的代码。

第 3 步:通过集合差集定位缺失标的

这是整个流程最核心的部分。

下面使用字段映射方式提取标的代码。

如果实际返回数据中标的代码位于普通列,需要填写经过验证的字段名称;如果位于索引中,则需要先根据真实结构执行索引转换。

def find_missing_symbols(
    requested_symbols,
    data,
    symbol_column,
):
    requested = set(requested_symbols)

    if not isinstance(data, pd.DataFrame):
        raise TypeError("data 必须是 DataFrame")

    if data.empty:
        return sorted(requested)

    if symbol_column not in data.columns:
        raise KeyError(
            f"找不到标的字段: {symbol_column}; "
            f"可用字段: {data.columns.tolist()}"
        )

    raw_symbols = (
        data[symbol_column]
        .dropna()
        .astype(str)
        .str.strip()
        .str.upper()
    )

    returned = set(raw_symbols)
    missing = requested - returned
    unexpected = returned - requested

    if unexpected:
        print("出现请求清单之外的代码:", sorted(unexpected))

    return sorted(missing)


# 先检查 batch_df.columns,再设置真实字段名称
# 以下仅演示字段已确认的情况
confirmed_symbol_column = "symbol"

if confirmed_symbol_column not in batch_df.columns:
    raise KeyError(
        "示例字段 symbol 尚未确认,"
        "请根据实际返回结构修改映射"
    )

missing_symbols = find_missing_symbols(
    requested_symbols=symbols,
    data=batch_df,
    symbol_column=confirmed_symbol_column,
)

print("未返回的标的:", missing_symbols)

这里的 symbol 只是示例映射名称,不表示已确认 QuantDash 批量接口一定返回该字段。

这段代码完成三件事:

第一,使用 set() 对请求标的去重,避免重复代码影响集合比较。

第二,从实际数据中提取标的代码,并统一大小写和首尾空格。

第三,通过差集得到未出现在结果中的标的。

需要注意,“未出现在结果中”不等于“没有行情”。它仅说明当前批量返回对象中,没有找到与请求代码匹配的记录。

第 4 步:对缺失标的进行单独复查

得到缺失清单后,下一步不是直接删除这些股票,而是单独验证。

可以使用 qd.klines.get() 对缺失标的重新发起查询。

def recheck_missing_symbols(qd, missing_symbols):
    results = []

    for symbol in missing_symbols:
        record = {
            "symbol": symbol,
            "status": None,
            "row_count": 0,
            "error": "",
        }

        try:
            df = qd.klines.get(
                symbol,
                period="1d",
                count=20,
                adjust="none",
                to_dataframe=True,
            )

            if not isinstance(df, pd.DataFrame):
                record["status"] = "结构异常"

            elif df.empty:
                record["status"] = "单标的查询也为空"

            else:
                record["status"] = "单标的查询有数据"
                record["row_count"] = len(df)

        except Exception as exc:
            record["status"] = "查询异常"
            record["error"] = str(exc)

        results.append(record)

    return pd.DataFrame(results)


review_df = recheck_missing_symbols(
    qd,
    missing_symbols,
)

print(review_df)

这里使用 adjust=“none” 查询不复权日 K 线,主要目的是进行基础数据存在性核查,不涉及复权收益计算。

如果单标的查询有数据,而批量结果中没有识别到该股票,就需要重点检查批量返回结构、代码映射和查询条件是否一致。

如果单标的查询也为空,仍不能直接认定股票已经退市或接口发生故障,需要继续结合上市日期、停牌情况和数据覆盖范围确认。

此外,单标的复查与批量查询应尽可能使用相同的数据口径,并固定同一查询时间窗口。上面的简化代码使用最近 20 根 K 线作为初步复查条件,正式诊断时还应核对两次查询的时间边界和复权设置。

关键坑与注意事项

  • 批量接口调用成功,不代表所有标的成功返回。 必须按请求标的逐一核对覆盖情况,不能仅判断返回对象非空。

  • 不能猜测标的代码字段。 DataFrame 的实际列名、索引类型和嵌套结构应先检查,再进行集合比较。

  • 标的代码必须规范化。 比较之前应统一交易所后缀、大小写和空格,但不能擅自把不同市场代码当成同一标的。

  • 缺失标的与异常标的不是一个概念。 某只股票可能完全没有返回记录,也可能有记录但关键行情字段无效,两类问题需要分开处理。

  • 批量与单标的查询必须注意参数一致性。 如果时间范围或复权方式不同,复查结果可能不具有直接可比性。

  • 不要默认返回行数等于标的数乘以 K 线数量。 停牌、上市时间和交易日差异等因素都可能影响有效数据量。

  • 保留诊断记录。 建议记录请求代码、查询参数、查询时间、缺失清单及复查状态,方便后续追踪与回测复现。

常见问题(FAQ)

Q:批量行情返回的 DataFrame 不为空,为什么还要检查缺失标的?

A:因为非空只说明存在部分数据,不能证明所有请求股票都包含在结果中。

Q:能否直接通过 DataFrame 行数判断哪些标的缺失?

A:不能。不同股票的有效 K 线数量可能不同,而且必须先明确每行对应的标的代码。

Q:为什么单标的查询有数据,批量结果却没有?

A:可能是请求参数不一致、返回结构解析错误或部分查询发生异常。需要保留原始结果,并进行一致条件下的复查。

Q:QuantDash SDK 是否会自动生成缺失标的报告?

A:本文没有依据认定它提供该功能。示例中的集合比较、异常分类和报告生成均由 Python 代码实现。

Q:生产环境中需要每次都重新查询缺失标的吗?

A:不一定。可以根据缺失比例、错误类型和业务优先级决定是否复查,并设置合理的请求频率及重试边界。

小结

批量行情查询最容易被忽略的问题,不是接口整体返回为空,而是部分股票没有返回数据,程序却继续执行。对于量化选股而言,这种静默缺失可能改变实际参与计算的股票池,进而影响研究结果。

使用 QuantDash Python SDK 可以获取批量历史 K 线,并通过单标的接口开展进一步复查。但请求集合对账、字段映射、异常分类和数据质量报告仍需要在业务代码中实现。把缺失标的显式记录下来,是提高行情处理可靠性和策略结果可复现性的基础工作。

参考

QuantDash Python SDK 文档:https://docs.quantdash.net/zh-Hans/sdk/python-quickstart

股票市场上股票行情数据接口有那几种?涵盖金融数据API接口 在股票市场中,有几种常见的股票行情数据接口,每种接口都有其特定的功能和用途。以下是一些常见的金融数据API接口,它们涵盖了广泛的金融数据内容,包括股票行情数据:实时行情接口:这种接口提供即时更新的股票行情数据,包括股票的实时价格、成交量、涨跌幅等信息。实时行情接口通常用于需要及时跟踪市场动态的交易员和投资者。历史行情接口:历史行情接口提供过去某段时间内的股票行情数据,包括开盘价、收盘价、最高价、最低价等信息。这种接口对于进行技术分析和制定投资策略非常有用。下面是亲测有效的股票行情数据接口获取方式。 阅读详情

相关推荐

股票行情接口,最全的接入方法

股票行情接口一般有两种,一种是WebSocket,一种是http,通过WebSocket可以获取逐笔的股票tick数据,实时并且高效;通过http接口可以获取股票行情接口中的股票历史数据;WebSocket是一种高效的双向通信协议,它允许数据的实时推送,避免了不断的轮询请求。其次,WebSocket允许您订阅特定的数据源或股票数据产品,只接收您感兴趣的信息,提高了数据的效率和可用性。通过接入股票行情数据的HTTP接口,您可以将数据导入到自己的分析工具或系统中,进行更深入的数据分析、模型构建和决策支持。

apifinance的博客 3424

如何批量获取多只股票实时行情?从逐只请求到批量行情的量化工程实践

批量获取多只股票实时行情的核心在于构建稳定、统一、可校验的数据入口,而非单纯减少请求数。逐只请求易导致请求爆炸、数据不一致与部分失败问题,而通过金融数据API(如QuantDash)实现批量查询,可将股票池作为整体处理,提升数据一致性与策略可靠性。结合数据质量检查与标准化流程,才能确保实时行情安全进入策略计算链路。

2601_96694965的博客 528

【股票行情】python-yfinance速查文档

python-yfinance速查文档,获取股票行情

jzzqwhw的博客 1182

Python如何获取股票实时行情?有哪些好用的库和工具可以利用

Python获取股票实时行情可借助多种库和工具,它们各有特点,能满足不同需求,助力股票数据获取与分析。

股票程序化接口 2076

Sigrity XtractIM实战:5步搞定IC封装宽带模型提取(附BGA案例)

本文通过一个典型BGA封装案例,详细介绍了使用Cadence Sigrity XtractIM工具进行IC封装宽带模型提取的五步实战流程。内容涵盖从环境准备、参数设置、结果验证到模型导出的完整操作,重点阐述了如何利用XtractIM生成高精度、紧凑的宽带SPICE模型,以解决高速电路设计中因封装模型不准导致的信号与电源完整性问题,助力工程师提升仿真精度与设计效率。

a1b2c的博客 319

VSLAM框架对比

格VSLAM特点介绍: (一)ORB-SLAM2 (二)ORB-SLAM3 (三)LSD-SLAM (四)

ljtx200888的博客 2294

如何使用easyquotation快速获取港股实时行情数据

想要轻松获取港股市场的实时行情数据吗?easyquotation作为一个功能强大的Python开源库,专门为投资者和开发者提供便捷的股票数据获取解决方案。通过整合新浪财经和腾讯财经的免费数据源,这个工具能够帮助您快速获取腾讯控股、长和等热门港股的实时价格、成交量、涨跌幅等关键信息。 ## 🚀 easyquotation的核心优势 **极速响应**:在网络状况良好的情况下,仅需200多毫秒即可

gitblog_01001的博客 1238

基于AI Agent的数据治理实战:从架构设计到企业级落地

数据治理是确保企业数据质量、一致性与安全性的核心实践,其核心原理在于通过规范、流程与技术工具对数据进行全生命周期管理。传统人工治理模式效率低下且难以规模化,而大语言模型(LLM)与智能体(Agent)技术的发展,为数据治理的自动化与智能化带来了突破。通过将自然语言理解、任务规划与工具调用能力相结合,AI Agent能够将治理规则“代码化”与“智能化”,实现从被动响应到主动发现的模式转变。在应用场景上,AI Agent可扮演智能数据专员角色,自动执行元数据问答、数据质量探查、口径对齐等任务,显著提升数据团队效

weixin_34008805的博客 418

Python如何获取股票实时行情?有哪些好用的库和工具可以实现

Python获取股票实时行情可借助tushare等库及其函数,投资者了解这些就能获取信息分析,为投资决策提供依据。

股票程序化接口 1523

用STM32CubeMX和HAL库,5分钟搞定TB6612驱动直流电机(附完整代码)

本文详细介绍了如何使用STM32CubeMX和HAL库快速配置TB6612驱动直流电机,包括硬件连接、CubeMX工程配置、电机驱动逻辑实现及进阶优化技巧。通过图形化工具和代码示例,即使是新手也能在5分钟内完成电机调速系统的搭建,大幅提升开发效率。

weixin_26854829的博客 266

八戒留档之宝塔部署edusoho

1.安装好基础的服务 2.上传你下载的代码到www/wwwroot文件3、配置网站 4.编辑创建的网站修改nginx文件 NGINX配置如下 server { listen 80; server_name 你的域名; root /www/wwwroot/项目文件名称/web/; location / { try_files $uri /app_dev.php$is_args$args; } ...

wolf23151269的博客 2540

Python如何获取股票实时行情?有哪些好用的库和工具

Python获取股票实时行情可借助一些库和工具,这有助于投资者或开发者快速准确获取数据来进行操作。

股票程序化接口 1589

Vivado实战:AXI转PCIe IP核配置全流程(含性能优化技巧)

本文详细介绍了在Vivado环境中配置AXI转PCIe IP核的全流程,包括工程准备、IP核参数设置、BAR空间配置、中断系统优化以及TLP传输效率提升等关键步骤。特别分享了经过验证的性能优化技巧,帮助开发者显著提升PCIe链路的吞吐量和稳定性,适用于视频采集、高速数据记录等应用场景。

weixin_30892037的博客 552

yfinance:零配置快速获取股票历史数据的Python库

你做量化回测时,往往第一步就会被卡住:只想要一只标的的股票历史数据,K线和成交量都缺不得,可Yahoo Finance的网站没有官方SDK,自己写爬虫又费时费力。yfinance就是为此而生的Python金融数据下载库,一行代码就能从Yahoo Finance的API把数据拉回来。数据直接以pandas DataFrame形式返回,拿到手就能接着算,不用再做格式转换。 ## 30秒上手 ```

gitblog_00895的博客 1024

树莓派使用 OLED 屏显示图片及文字

树莓派默认是不带显示屏的,如果想要查看系统的一些信息,需要使用电脑登录到树莓派,或者通过 HDMI 连接外接显示器查看。这样做总是有点麻烦,我们可以通过外接一个 OLED 屏来显示一些关键参数或者图片。本文将详细介绍操作方法。 OLED 模组介绍 OLED 屏主要有两种:128×32 和 128×64 ,主要颜色是白、黄、蓝。OLED 屏的特点是功耗低,价格便宜,使用 I2C 接口与主机连接。本文所使用的是 128×64 尺寸的屏幕,外形如下: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直

码到成功 3743

Oracle EBS Interface/API(42) -AP发票客制化付款申请

背景 在OA系统上,选择Oracle EBS的某张AP发票做付款申请,需要类似于锁定该发票以便付款,其他用户或者下次用户不能再次选择该发票做付款申请。 快速参考 参考点 内容 功能导航 N: AP->Invoices->Entry>Invoices 并发请求 None 基表 AP.AP_INV_SELECTION_CRITERIA_ALLAP.AP_SELECTED_INVOICES_ALL API 参考下面介绍 错误信息表 None 接口Form

陈显平的专栏-Oracle EBS 1200

Python如何快速接入聚合数据行情API

聚合数据行情API,指的是一个接口即可提供多个不同交易品种的行情数据查询,这种接口,可以让你同时查询A股、美股、外汇等多种资产的行情数据。无论你需要实时获取某个品种的报价,还是需要获取历史数据,API都能为你提供丰富的资源。今天,我将分享如何用Python来调用。

kk_stoper的博客 1292

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

easyquotation:Python股票行情获取工具的全方位解析

easyquotation是一款专注于股票市场数据获取的Python量化工具,为量化投资初学者与开发者提供高效、便捷的A股和港股数据获取方案。通过简单的API调用,用户可以快速获取实时行情、历史数据及专业金融信息,为投资决策提供数据支持。 ## 多数据源切换指南 easyquotation支持多种数据源,用户可根据需求灵活选择: - **新浪行情**:`easyquotation.use('

gitblog_00008的博客 7330

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

3步用 OpenData 获取股票期货实时行情

股票实时行情数据从哪来?手动爬取太折腾?想在脚本里批量处理股票和期货的行情,往往得自己找数据源、自己写抓取逻辑,源网站一改版还得跟着修。OpenData 是一款开源 Python 库,定位就是金融数据获取:爬取的工作它包在内部,OpenData 实时行情接口几行代码就能调通。下面用 3 步带你跑起来。 ## 三步拿到实时行情数据 ### 第1步|一行命令安装 OpenData 📦 打开终端

gitblog_00579的博客 834

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

通达信api接口开发python时如何获取股票实时数据及行情走势

使用Python开发通达信API接口,涉及获取股票实时数据和行情走势,要理解概念,利用API特点,选择合适开发方式获取数据,用于后续分析或制定交易策略。

股票量化交易自动交易程序化交易接口 6569

如何用 yfinance 十分钟拿到股票行情:新手完整上手指南

想让 Python 直接读到股票价格,还要自己拼接口吗?yfinance 就是为这件事做的开源库。它把雅虎财经的行情数据搬进 pandas,三行代码就能拿到一年日线。它还支持批量下载、查财报、按条件筛选标的。下面手把手带你装好它,跑通第一份数据。 ## 一、它适合谁 🎯 **独立开发者**:你以前是不是手动打开网页、一个个抄价格?现在一个 download 调用就能把数据抓下来,省掉抄数据的

gitblog_01163的博客 673

yfinance 使用指南:3 步获取 Yahoo Finance 股票行情数据

yfinance 是一个从 Yahoo! Finance 公开接口获取市场数据的开源 Python 库,当前版本 1.6.0(见 [yfinance/version.py](https://link.gitcode.com/i/6565ea22b8d3c8450ca80cc5c872a013))。一行代码即可拿到股票的历史行情、财务报表和期权链,还支持批量下载、条件选股和实时行情推送,适合做股票数

gitblog_00929的博客 1105

基于python 的股票行情查询系统开发(二)

基于python 的股市行情查询系统开发(二) 拖更的我终于回来了,这一周lz上班上的是心力憔悴啊,工作日都没什么时间继续开发,忙于各种蛋疼的事,进度缓慢呐。。。(插一句,这周股票回暖,牛市是不是又回来了?截止到lz目前,比特币也突破了60000刀!) 废话不多说了,书接上回,我们获取了股票名称和股票代码: 那么,我们就可以通过股票代码,使用爬虫进行历史的数据的获取啦。 getstockdata.py import urllib.request import urllib import requests

qq_37025471的博客 1120

股票行情数据API包含哪些功能?对股票投资者有何重要意义?

股票行情数据API功能多样,可提供实时数据,对投资者很重要,能辅助决策,节省时间精力,有助于股票投资中的更好操作。

股票程序化接口 822

Python如何实现精准获取股票实时行情?有哪些好用的库和方法?

利用Python可精准获取股票实时行情,有好用的库和方法,能助力掌握股票动态。

股票量化交易自动交易程序化交易接口 1313

如何用实时行情构建一个简单的股票扫描器?从数据获取到规则筛选的完整实现思路

一个实用的实时股票扫描器本质是“定时获取行情快照 → 标准化数据 → 批量筛选 → 输出候选”的数据流水线。通过批量获取行情并用Pandas向量化处理,可高效筛选满足多条件(如涨幅、成交额)的股票。关键在于统一代码格式、分离数据与规则逻辑、避免重复触发,并妥善处理缺失值。结合轮询机制与状态追踪,可构建轻量、可扩展的扫描系统,适合量化入门与实战应用。

quantdash_cc的博客 231
上一篇: 量化策略启动时再获取行情数据,为什么容易影响策略稳定性?
下一篇: 个人开发者接入美股行情:用 AAPL.US 跑一遍 QuantDash 的接入与验收
quantdash_cc
博客等级 码龄105天 38粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值