繁体   English   中英

从雅虎财经获取股票收益日期

[英]Getting stock earnings date from yahoo finance

我正在使用 python 和 yahoo api 从雅虎金融获取指定个股的下一个收益日期。 以下链接是有关使用 yahoo_fin 的信息: http ://theautomatic.net/yahoo_fin-documentation/#get_next_earnings_date 下面还粘贴了我正在使用的 python 脚本。 它基本上从 Excel 表中获取股票代码并返回股票代码的下一个收益日期。 如果列表中的所有代码都有下一个收益日期,它就可以正常工作。 然而,一旦它点击列表中没有下一个收益日期的股票代码(即在雅虎财经页面上显示为 N/A),脚本就会抛出一个错误(也显示如下。实际上是一个链接,因为我显然不是允许附加图像!)并结束该过程。 请为这个问题提供解决方案或解决方法。 谢谢你。

import yahoo_fin.stock_info as si
import pandas as pd

import xlwings as xw

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

#code to get number of rows with data
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
    tickerEarnings = si.get_next_earnings_date(ticker_symbol)
    print(ticker_symbol,tickerEarnings)

代码运行时的打印图像:

在此处输入图片说明

打印输出文本(如果无法查看图像)如下,但未对齐:

IMGN 2021-11-04 12:30:00
CAN 2021-11-29 13:30:00
NRXP 2021-11-15 21:00:00
HIMS 2021-08-11 21:00:00
ENLC 2021-11-02 20:00:00
CLOV 2021-08-11 21:00:00
MRIN 2021-11-03 10:59:00
Traceback (most recent call last):
  File "C:\Users\Kay\PycharmProjects\StockScreener\EarningsYahoo.py", line 19, in <module>
    tickerEarnings = si.get_next_earnings_date(ticker_symbol)
  File "C:\Users\Kay\AppData\Local\Programs\Python\Python310\lib\site-packages\yahoo_fin\stock_info.py", line 823, in get_next_earnings_date
    temp = parsed_result['context']['dispatcher']['stores']['QuoteSummaryStore']['calendarEvents']['earnings']['earningsDate'][0]['raw']
IndexError: list index out of range

Process finished with exit code 1

正如您所说,问题是某些符号没有earningsDate

get_next_earnings_date()尝试获取['earningsDate'][0]['raw']它无法获取[0]并且这会引发错误index range因为没有索引为0元素。

它与您的命令range()无关。

标准方法是使用try/except来捕获错误并对这个问题做一些事情 - 即。 您可以跳过此符号的数据。


最小工作示例

import yahoo_fin.stock_info as si

for ticker_symbol in ['IMGN', 'DIDI']:
    print('Symbol:', ticker_symbol)
    try:
        tickerEarnings = si.get_next_earnings_date(ticker_symbol)
        print('Earnings:', tickerEarnings)
    except Exception as ex:
        print('[Exception]', ex)
        print('Earnings: skiping this symbol')

结果:

Symbol: IMGN
Earnings: 2021-11-04 13:30:00
Symbol: DIDI
[Exception] list index out of range
Earnings: skiping this symbol

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM