You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何屏蔽Python yfinance包输出的404错误提示信息?

如何屏蔽yfinance获取股票评级时的404错误提示?

我用Python的yfinance包获取股票评级,代码如下:

recommendations = yf.Ticker("ANSCU").upgrades_downgrades

该代码大部分情况运行正常,但遇到无评级的股票代码(如ANSCU)时,会输出404错误信息:

404 Client Error: Not Found for url: https://query2.finance.yahoo.com/v10/finance/quoteSummary/ANSCU?modules=upgradeDowngradeHistory&corsDomain=finance.yahoo.com&form

尝试过重定向标准输出,但仅对自定义函数输出有效,无法屏蔽yfinance内部输出的错误提示,请问如何解决?


解决方案

方法1:通过logging模块屏蔽yfinance日志

yfinance内部使用logging模块输出错误信息,调整其日志级别即可过滤这类404错误:

import logging
import yfinance as yf

# 将yfinance的日志级别设为CRITICAL,仅输出严重错误
logging.getLogger('yfinance').setLevel(logging.CRITICAL)

recommendations = yf.Ticker("ANSCU").upgrades_downgrades

方法2:临时重定向标准错误输出

很多库的错误提示会输出到stderr而非stdout,之前重定向stdout无效是因为没覆盖到stderr,可以临时将stderr重定向到空设备:

import sys
import os
import yfinance as yf

def get_stock_recommendations(ticker):
    original_stderr = sys.stderr
    try:
        # 重定向stderr到空设备(Linux/macOS用os.devnull,Windows用"NUL")
        sys.stderr = open(os.devnull, 'w')
        return yf.Ticker(ticker).upgrades_downgrades
    finally:
        # 恢复原始stderr
        sys.stderr.close()
        sys.stderr = original_stderr

recommendations = get_stock_recommendations("ANSCU")

方法3:捕获请求异常(进阶)

如果需要更精细的控制,可以捕获yfinance内部调用requests时抛出的HTTP异常,避免错误信息输出:

import yfinance as yf
from requests.exceptions import HTTPError

try:
    ticker = yf.Ticker("ANSCU")
    # 直接调用内部方法获取数据,跳过自动错误输出逻辑
    data = ticker._get_quote_summary("upgradeDowngradeHistory")
    recommendations = ticker._parse_upgrades_downgrades(data)
except HTTPError:
    # 捕获404等HTTP错误,自定义处理逻辑
    recommendations = None

内容的提问来源于stack exchange,提问作者S Suen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 13:27:12