Google finance 为什么谷歌的熊猫数据阅读器不';不行?
我试图通过以下代码从google finance获取数据:Google finance 为什么谷歌的熊猫数据阅读器不';不行?,google-finance,pandas-datareader,Google Finance,Pandas Datareader,我试图通过以下代码从google finance获取数据: import pandas_datareader.data as wb import datetime as dt start = dt.datetime(2015, 1, 1) end = dt.datetime(2017, 1, 1) dt = wb.DataReader('FB', 'google', start, end) dt.head() 我得到了这个 但如果我将“谷歌”改为(改用雅虎金融),它就可以正常工作。那么它有
import pandas_datareader.data as wb
import datetime as dt
start = dt.datetime(2015, 1, 1)
end = dt.datetime(2017, 1, 1)
dt = wb.DataReader('FB', 'google', start, end)
dt.head()
我得到了这个
但如果我将“谷歌”改为(改用雅虎金融),它就可以正常工作。那么它有什么问题吗?有一个悬而未决的问题
下面是一个快速修复,从源代码进行移植,对其进行裁剪,并进行一些轻微的调整
我认为问题在于请求返回的主体。get()
和读取结果字节。(回溯与此一致。)例如,尝试data=requests.get(url).content
(get字节);这将失败。下面,data=requests.get(url).text
有效
我真的没有严格地测试过这个,但是谷歌API看起来确实工作正常。例如,url
生成的导出链接目前运行良好
import datetime
import requests
from io import StringIO
from pandas.io.common import urlencode
import pandas as pd
BASE = 'http://finance.google.com/finance/historical'
def get_params(symbol, start, end):
params = {
'q': symbol,
'startdate': start.strftime('%Y/%m/%d'),
'enddate': end.strftime('%Y/%m/%d'),
'output': "csv"
}
return params
def build_url(symbol, start, end):
params = get_params(symbol, start, end)
return BASE + '?' + urlencode(params)
start = datetime.datetime(2010, 1, 1)
end = datetime.datetime.today()
sym = 'SPY'
url = build_url(sym, start, end)
data = requests.get(url).text
data = pd.read_csv(StringIO(data), index_col='Date', parse_dates=True)
print(data.head())
# Open High Low Close Volume
# Date
# 2017-11-30 263.76 266.05 263.67 265.01 127894389
# 2017-11-29 263.02 263.63 262.20 262.71 77512102
# 2017-11-28 260.76 262.90 260.66 262.87 98971719
# 2017-11-27 260.41 260.75 260.00 260.23 52274922
# 2017-11-24 260.32 260.48 260.16 260.36 27856514
编辑:该问题应在pandas_datareader的0.6.0版上修复。如果没有,请重新打开。我只是在今晚收到了一个类似的错误,但在脚本中提供了一个股票列表,直到今天为止。下面的链接可能与此更改有关。。。我将把它放在一个新问题中。