[英]Scraping Yahoo Finance stock earnings release dates with Selenium
[英]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.