我使用以下代码从纳斯达克下载的列表符号中读取yahoo finance的数据。
pnls = {i:dreader.DataReader(i,'yahoo','1985-01-01','2017-03-30') for i in symbols}
for df_name in pnls:
try:
pnls.get(df_name).to_csv("/Users/Jiong/Documents/data/{}_data.csv".format(df_name), index=True, header=True)
except:
print("error {}".format(df_name))
else:
print("done {}".format(df_name))
猜猜某些符号可能无效,Yahoo Finance会抛出RemoteDataError Exception
。
上面的代码应该继续,但它仍然停止在错误。
除了捕获所有异常外?或者这是运行时错误?
无论如何要让代码忽略它并继续?谢谢。查看运行
下面的错误118 if params is not None and len(params) > 0:
119 url = url + "?" + urlencode(params)
--> 120 raise RemoteDataError('Unable to read URL: {0}'.format(url))
121
122 def _read_lines(self, out):
RemoteDataError: Unable to read URL: http://ichart.finance.yahoo.com/table.csv?c=1985&f=2017&s=MITT%5EA&g=d&ignore=.csv&d=2&e=30&a=0&b=1
答案 0 :(得分:0)
您需要处理加注异常,否则它将在凸起的位置停止。因此,如果没有捕获和处理引发异常,它将被中断。
你需要的是这样的东西:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre>
a
b
c
d
q
w
e
r
t
y
u
i
o
p
a
s
d
f
g
h
j
k
l
z
x
c
v
b
n
m
<span id="goToTop">go to top</span>
</pre>
有关错误的详细信息,请参阅this documentation。
答案 1 :(得分:0)
从另一个页面获取了此导入;它似乎为我解决了这个问题。尝试从Yahoo提取股票数据时遇到一个远程错误。在添加RemoteDataError异常之前,您需要执行以下导入:
from pandas_datareader._utils import RemoteDataError
df_ = pd.DataFrame()
for i in assets:
print(i)
try:
vec = web.DataReader(i, 'yahoo', start='12/10/2006', end='2/1/2007')
vec['asset'] = i
vec['returns_close_raw'] = np.log(vec.Close/vec.Close.shift())
vec['returns_open_raw'] = np.log(vec.Open/vec.Open.shift())
vec['returns_open_raw10'] = np.log(vec.Open/vec.Open.shift(10))
vec['returns_close_raw10'] = np.log(vec.Close/vec.Close.shift(10))
df_ = pd.concat([df_, vec])
except RemoteDataError:
print('remote error')
except KeyError:
print('key error')