Попытка использовать финансовый API для сбора данных в документ Excel. Он использует мой лимит API и записывает в .XLSX,Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Попытка использовать финансовый API для сбора данных в документ Excel. Он использует мой лимит API и записывает в .XLSX,

Сообщение Anonymous »

Мы с другом пытаемся написать программу, которая сканирует API для сбора информации из отчета о доходах, а затем записывает ее в документ Excel. В конечном итоге наша цель состоит в том, чтобы он показывал нам в реальном времени только те компании, прибыль которых превышает прибыль на Х процентов. Но чтобы ограничить количество переменных и для проверки концепции, на данный момент мы просто попросили его записать в документ Excel тикер каждой компании в индексе S&P 500, их ожидаемую прибыль на акцию и фактическую прибыль на акцию. Мы довели программу до такой степени, что она очищает API (мое ежедневное использование уже привыкло) и записывает документ Excel. Однако подсказка CMD возвращает ошибку для каждого тикера о том, что данные не найдены, а документ Excel, который он записывает, совершенно пуст. Любая помощь будет принята с благодарностью. Спасибо.
Вот код, который мы используем:

Код: Выделить всё

import pandas as pd
import requests

# Constants
API_KEY = 'API Key'  # Updated API key
OUTPUT_FILE = r'C:\Users\MyName\Downloads\s_and_p_500_earnings.xlsx'  # Adjust path as needed

def get_sp500_tickers():
# Read the CSV file to get S&P 500 tickers
df = pd.read_csv(r'C:\Users\MyName\Downloads\constituents.csv')
return df['Symbol'].tolist()[:250]  # Fetch the first 250 tickers

def fetch_earnings_data(tickers):
earnings_data = []

for ticker in tickers:
# Fetch earnings data for Q3 2024
url = f'https://financialmodelingprep.com/api/v3/earnings/{ticker}?apikey={API_KEY}'
response = requests.get(url)

# Check the response status
if response.status_code == 200:
data = response.json()
# Log the response for debugging
print(f"Response for {ticker}: {data}")

# If the response is valid and contains data
if isinstance(data, list) and data:
# Filter for Q3 2024
for earning in data:
report_date = earning.get('date')
if report_date and '2024-09-' in report_date:  # Assuming Q3 ends in September 2024
company_name = earning.get('name')  # Company name from the response
actual = earning.get('actualEPS')
estimated = earning.get('expectedEPS')

earnings_data.append({
'Company Name': company_name,
'Ticker': ticker,
'Estimated Earnings': estimated,
'Actual Earnings': actual
})
break  # Stop checking once we find the relevant quarter
else:
print(f"No earnings data found for {ticker} or response format is invalid.")
else:
print(f"Error fetching data for {ticker}: {response.status_code} - {response.text}")

return earnings_data

def save_to_excel(earnings_data):
df = pd.DataFrame(earnings_data)
df.to_excel(OUTPUT_FILE, index=False, sheet_name='S&P 500 Earnings')
print(f"Earnings data saved to {OUTPUT_FILE}")

if __name__ == "__main__":
tickers = get_sp500_tickers()
earnings_data = fetch_earnings_data(tickers)
save_to_excel(earnings_data
Ключ API и имя файла верны, я только что удалил их здесь.

Подробнее здесь: https://stackoverflow.com/questions/790 ... nt-it-is-u
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»