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

使用Python从雅虎财经获取股票财报日期遇无数据报错如何解决

问题根因

yahoo_fin库的get_next_earnings_date方法在目标股票没有公开的下一期财报日期时,底层接口返回的财报日期列表为空,方法内部直接取列表第一个元素就会触发IndexError,导致程序直接终止。

修复方案

在调用财报查询方法的位置增加异常捕获逻辑,遇到无有效数据的股票时做自定义标记,不会中断后续其他股票的查询,修改后的完整代码如下:

import yahoo_fin.stock_info as si
import pandas as pd
import xlwings as xw

wb = xw.Book("StockScreener.xlsm")
ws1 = wb.sheets["Tickers"]

# 统计有股票代码的有效行数
rownum = 3
maxRow = 3

while (ws1.range('B'+str(rownum)).value != None):
    maxRow += 1
    rownum += 1

for ticker_row in range(3, maxRow):
    ticker_symbol = ws1.cells(ticker_row, 2).value
    # 异常捕获处理无财报数据的情况
    try:
        tickerEarnings = si.get_next_earnings_date(ticker_symbol)
        print(ticker_symbol, tickerEarnings)
        # 如果需要写回Excel可增加下行:
        # ws1.cells(ticker_row, 3).value = tickerEarnings
    except IndexError:
        # 自定义无数据时的输出标记,可根据需求调整
        print(ticker_symbol, "N/A")
        # 如果需要写回Excel可增加下行:
        # ws1.cells(ticker_row, 3).value = "N/A"

扩展说明

如果需要进一步兼容其他可能的异常(比如股票代码无效、网络请求失败等),可以在except IndexError下方增加其他异常类型的捕获分支,或者直接捕获通用Exception做统一处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:24:03