我想获取 S&P500 股票行情报告的发布日期列表。我正在使用 Python 语言中的 yfinance 和 Streamlit 模块并收到此错误消息:
“获取 WMB 收入数据时出错:尚未实现从 Yahoo API 获取“收入””。
当前代码:
import streamlit as st
import pandas as pd
import yfinance as yf
from datetime import datetime, timedelta
import requests
from io import StringIO
# Function to fetch earnings report dates for a given ticker
def get_earnings_dates(ticker):
try:
stock = yf.Ticker(ticker)
earnings = stock.earnings
return earnings
except Exception as e:
print(f"Error fetching earnings data for {ticker}: {e}")
return None
# Function to generate earnings report dates for S&P 500 tickers in the past year
def generate_earnings_reports():
try:
# Fetch S&P 500 tickers
url = "https://raw.githubusercontent.com/datasets/s-and-p-500-companies/master/data/constituents.csv"
data = requests.get(url).content.decode('utf-8')
sp500_tickers = pd.read_csv(StringIO(data))['Symbol'].tolist()
print(f"Found {len(sp500_tickers)} S&P 500 tickers.")
earnings_data = {}
for ticker in sp500_tickers:
print(f"Fetching earnings data for {ticker}...")
earnings = get_earnings_dates(ticker)
if earnings is not None and not earnings.empty:
earnings_data[ticker] = earnings['Earnings Date'].tolist()
return earnings_data
except Exception as e:
print(f"Error generating earnings report dates: {e}")
return None
# Streamlit app
def main():
st.title('S&P 500 Earnings Report Dates')
earnings_data = generate_earnings_reports()
if earnings_data:
st.write("Earnings Report Dates for S&P 500 Stocks in the Past Year:")
for ticker, dates in earnings_data.items():
st.write(f"Ticker: {ticker}")
st.write("Earnings Report Dates:")
for date in dates:
st.write(date.strftime('%Y-%m-%d'))
st.write("---")
else:
st.write("Failed to fetch earnings report dates for S&P 500 tickers in the past year.")
if __name__ == "__main__":
main()
我正在使用 stock.earnings_dates 从 yfinance 库调用收益。然而,我认为图书馆今天在提取收益日期方面存在问题。我从输出中收到 KeyError: 'Earnings Date'。