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

如何用异常处理yfinance的HTTPError以继续遍历股票列表?

解决yfinance股票数据获取时的异常处理问题

问题场景

遍历股票列表获取行业信息时,遇到无法获取数据的股票(如'FB'),尝试异常处理但失败,出现两种错误:

  1. 未捕获到HTTPError,直接抛出404错误
  2. 引用yf.utils.exceptions.HTTPError导致AttributeError,因为该模块不存在

原代码:

stcks = ['AXSM', 'FB', 'AAPL']
for i in stcks:
    try: 
        sec = yf.Ticker(i).info['sector']
    except yf.utils.exceptions.HTTPError as err:
        print('error')
        continue
    else: 
        print('hi')

执行时的错误输出:

hi
HTTPError: 404 Client Error: Not Found for url: https://query2.finance.yahoo.com/v10/finance/quoteSummary/FB?modules=summaryProfile%2CfinancialData%2CquoteType%2CdefaultKeyStatistics%2CassetProfile%2CsummaryDetail&ssl=true

修改异常引用后出现的错误:

AttributeError
Traceback (most recent call last)
    Cell In[243], line 5
      3 try    : 
      4     sec = yf.Ticker(i).info['sector']
    ----> 5 except yf.utils.exceptions.HTTPError as err:
      6     print('error')
      7     continue

AttributeError: module 'yfinance.utils' has no attribute 'exceptions'

问题原因

  1. yfinance底层依赖requests库发送请求,抛出的HTTPError实际来自requests.exceptions,而非yf.utils.exceptions
  2. 当股票数据获取失败时,yf.Ticker(i).info可能返回空字典,此时访问['sector']会抛出KeyError,同样需要捕获

解决方案

捕获正确的异常类型,同时处理可能的空数据情况,确保遍历能继续执行:

import yfinance as yf
import requests

stcks = ['AXSM', 'FB', 'AAPL']
for stock in stcks:
    try:
        ticker = yf.Ticker(stock)
        info = ticker.info
        # 先校验数据是否有效
        if not info:
            raise ValueError("未获取到有效数据")
        sec = info['sector']
    except (requests.exceptions.HTTPError, KeyError, ValueError) as err:
        print(f"股票{stock}数据获取失败: {err}")
        continue
    else:
        print('hi')

说明

  • 捕获requests.exceptions.HTTPError处理请求失败的情况(如404)
  • 捕获KeyError处理info字典中无'sector'字段的情况
  • 主动检查info是否为空,抛出并捕获ValueError,避免后续键访问报错
  • 处理后AXSM和AAPL正常输出'hi',FB触发异常处理并跳过,最终得到预期的两个'hi'输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:57:21