1

以前,我使用 Morningstar API 来获取股票数据;但是,现在我离开美国一周,我无法访问数据。

这是代码片段:

import datetime as dt
from dateutil.relativedelta 
import relativedelta
import matplotlib.pyplot as plt
from matplotlib import style
import pandas as pd
pd.core.common.is_list_like = pd.api.types.is_list_like
import pandas_datareader.data as web
import csv
from mpl_finance 
import candlestick_ohlc
import matplotlib.dates as mdates
from matplotlib.dates import DateFormatter, MonthLocator, YearLocator,    DayLocator, WeekdayLocator
style.use( 'ggplot' )


end = dt.date.today()

start_48 = end - relativedelta( years=4 )
start_120 = end - relativedelta( years=10 )

ticker = input( 'Ticker: ' ) #should be in Uppercase
ticker = ticker.upper()

df_w = web.DataReader( ticker, 'morningstar', start_48, end )
df_m = web.DataReader( ticker, 'morningstar', start_120, end )


print()

file_name_w = ticker + 'weekly.csv'
file_name_m = ticker + 'monthly.csv'
df_w.to_csv( file_name_w )
df_m.to_csv( file_name_m )

df_w = pd.read_csv( file_name_w, parse_dates=True, index_col=0 )
df_m = pd.read_csv( file_name_m, parse_dates=True, index_col=0 )

这是错误消息:

Ticker: spy
Traceback (most recent call last):
File "/Users/zubairjohal/Documents/OHLC.py", line 24, in <module>
df_w = web.DataReader( ticker, 'morningstar', start_48, end )
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas_datareader/data.py", line 391, in DataReader
session=session, interval="d").read()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas_datareader/mstar/daily.py", line 219, in read
df = self._dl_mult_symbols(symbols=symbols)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas_datareader/mstar/daily.py", line 130, in _dl_mult_symbols
resp.status_code, resp.reason))
Exception: Request Error!: 404 : Not Found

这是一个IP问题,有没有办法解决这个问题?我知道这段代码很好,因为它在两天前运行得很好。

4

2 回答 2

2

我也有同样的问题,在美国。数据阅读器服务(晨星)在 3 天前工作,前天停止工作。我相信 Morningstar 在这里改变了 REST 接口,所以除了等待开发人员修复它,我们无能为力。

于 2018-08-01T15:14:09.380 回答
0

404 表示未找到,假设您没有进行任何更改并且突然不起作用我会说 API URL 在该国家/地区不可访问(或在该特定网络中被阻止)或其 API 已更改(或正在维修)。如果您知道 API URL,请直接在具有不同 Internet 连接的浏览器中尝试。

于 2018-08-01T10:37:27.597 回答