调用YahooEarningsCalendar方法时出现IndexError错误如何解决?
错误原因
你所用的yahoo_earnings_calendar第三方库早已停止维护,雅虎财经的财报日历页面结构经过多次更新后,原有爬虫逻辑依赖的root.App.main开头的全局JS变量已经从页面返回内容中移除,代码筛选对应内容后得到空列表,调用[0]取第一个元素时就触发了索引越界错误。
解决方法
方案一:更换为维护中的适配库(推荐)
改用目前仍在持续更新适配雅虎接口的yfinance库获取财报日历数据,示例代码如下:
import yfinance as yf import pandas as pd from datetime import datetime # 设置查询日期 report_date = datetime.now().date() # 获取当日财报数据 earnings_data = yf.Earnings(frequency="daily") earnings_df = earnings_data.get_earnings(start=report_date, end=report_date) # 输出前5行结果 earnings_df.head()
安装依赖执行命令:pip install yfinance
方案二:修改原有库源码(不推荐)
如果必须使用原yahoo_earnings_calendar库,可以找到本地安装路径下的scraper.py文件,修改_get_data_dict方法中匹配JS变量的逻辑,适配当前雅虎页面的新数据存储规则,缺点是后续雅虎页面再调整仍会报错,维护成本极高。
内容的提问来源于stack exchange,提问作者Elisa Ravasi
相关产品推荐
相关产品推荐

