You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用yfinance查询无效股票代码触发404错误,如何屏蔽该错误以避免用户感知?

yfinance查询无效股票代码触发404错误,如何屏蔽该错误以避免用户感知?

别担心,这个问题在使用yfinance时挺常见的,咱们可以通过异常捕获结果校验结合的方式,把生硬的错误信息替换成友好提示,完全不让用户感知到底层的404错误。我之前处理过类似场景,给你分享两种实用的做法:

方法一:捕获HTTP 404异常并返回友好提示

最直接的方式是用try-except块捕捉请求层面的404错误,同时还能处理其他可能的网络异常:

import yfinance as yf
from requests.exceptions import HTTPError

def fetch_stock_info(ticker_symbol):
    try:
        # 初始化ticker对象
        ticker = yf.Ticker(ticker_symbol)
        # 获取股票信息
        stock_info = ticker.info
        
        # 额外校验:有时候不会抛404,但返回空字典,也需要处理
        if not stock_info:
            return "抱歉,未查询到该股票的相关信息,请检查股票代码是否正确。"
        
        return stock_info
    except HTTPError as e:
        # 精准匹配404错误
        if e.response.status_code == 404:
            return "抱歉,该股票代码不存在,请确认后重试。"
        # 处理其他HTTP异常
        else:
            return f"获取股票信息时出现问题:{str(e)}"
    except Exception as e:
        # 兜底处理其他未知异常
        return f"系统临时故障,请稍后再试:{str(e)}"

# 测试无效代码
print(fetch_stock_info("QQQQQQQQQ"))

方法二:提前校验股票代码有效性(可选)

如果想在查询前先过滤掉明显无效的代码,可以借助yfinance的Ticker对象的一些属性辅助判断,不过这种方式不如异常捕获全面(毕竟网络问题或API变动可能导致校验通过但查询失败),可以作为补充:

import yfinance as yf

def is_valid_ticker(ticker_symbol):
    ticker = yf.Ticker(ticker_symbol)
    # 尝试获取历史数据的前几行,若为空则大概率无效
    hist = ticker.history(period="1d")
    return not hist.empty

def fetch_stock_info_safe(ticker_symbol):
    if not is_valid_ticker(ticker_symbol):
        return "抱歉,该股票代码无效,请检查后重试。"
    # 后续正常查询逻辑
    ticker = yf.Ticker(ticker_symbol)
    return ticker.info

# 测试
print(fetch_stock_info_safe("QQQQQQQQQ"))

总的来说,方法一的异常捕获是更可靠的方案,既能处理无效代码的404错误,还能覆盖其他网络异常场景,同时给用户清晰易懂的提示,完全屏蔽底层的错误细节。

备注:内容来源于stack exchange,提问作者Bogdan Ciocoiu

火山引擎 最新活动