我有一个 Excel 股票代码列表,我正在通过 yfinance 运行它来获取基本分析数据。我收到 2 个错误:
我尝试在第一个循环中捕获 404,在第二个循环中捕获 keyError...404 捕获不起作用。
** 我的代码:**
import requests
import time
import yfinance as yf
import pandas as pd
the_list_include = []
################################################### OPEN THE EXCEL FILE AND COLLECT THE SYMBOLS
df = pd.read_excel('company_list_404.xlsx')
symbols = df['Symbol'].values.tolist()
for count, symbol in enumerate(symbols):
try:
stock = yf.Ticker(symbol)
the_list_include.append(symbol)
except requests.exceptions.HTTPError:
continue
for i in the_list_include:
try:
stock = yf.Ticker(i)
PE = stock.info['forwardPE']
except KeyError:
print("\n")
continue
我尝试在第二个循环的一行中使用多个异常:
for i in the_list_include:
try:
stock = yf.Ticker(i)
PE = stock.info['forwardPE']
except (requests.exceptions.HTTPError, KeyError) as e:
print("\n")
continue
我认为
Ticker
可能很懒,当你运行时它不会连接到服务器Ticker()
.info[]
或其他函数时。
即使我把
stock = yf.Ticker(symbol)
放在 try/except
外面,只将 info[]
放在 try/except
里面,它也会抓住 HTTPError
symbols = ['ABC', 'AAL', 'IBM']
for count, symbol in enumerate(symbols):
print('Symbol:', symbol)
stock = yf.Ticker(symbol)
try:
PE = stock.info['forwardPE']
except requests.exceptions.HTTPError as e:
print(' HTTPError:', e)
except KeyError as e:
print(' KeyError:', e)
所以你可能必须始终使用
except requests.exceptions.HTTPError
来解决这个问题。或者将所有代码放入 try/except requests.exceptions.HTTPError