Python 中某些股票代码的盈利日期

问题描述 投票:0回答:1

我想获取 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()
python stock trading yfinance
1个回答
0
投票

我正在使用 stock.earnings_dates 从 yfinance 库调用收益。然而,我认为图书馆今天在提取收益日期方面存在问题。我从输出中收到 KeyError: 'Earnings Date'。

© www.soinside.com 2019 - 2024. All rights reserved.