Python pandas Google财经国际股票 - 寻找获取国际股票价格历史的方法

3 投票
2 回答
6084 浏览
提问于 2025-04-18 00:48

这个可以用:国内股票

gticker='NYSE:IBM'
import pandas.io.data as web
dfg = web.DataReader(gticker, 'google', '2013/1/1', '2014/3/1')

这个不行:国际股票

gticker='HKG:0700'
import pandas.io.data as web
dfg = web.DataReader(gticker, 'google', '2013/1/1', '2014/3/1')

尽管对于这两种股票,你都可以点击“历史价格”链接查看历史数据。

有什么建议吗?

2 个回答

3

看起来谷歌财经只支持美国和英国市场的CSV下载,因为在“历史图表”下的“下载到电子表格”链接,只会出现在这两个市场上市的股票上。下面是一个例子:

在英国上市的汇丰银行股票 https://www.google.com/finance/historical?q=LON%3AHSBA

在美国上市的汇丰银行股票 https://www.google.com/finance/historical?q=NYSE%3AHSEA

在香港上市的汇丰银行股票 https://www.google.com/finance/historical?q=HKG%3A0005

2

Google的数据读取器想要下载一个csv文件。所以对于股票代码'goog',它请求了以下网址来获取这个csv文件:

http://www.google.com/finance/historical?q=GOOG&startdate=Jan+1%2C+2013&enddate=Mar+1%2C+2014&output=csv

这对所有国内股票(比如IBM)都是适用的。但是对于'HKG:0700',它请求的是:

http://www.google.com/finance/historical?q=HKG%3A0700&startdate=Jan+01%2C+2014&enddate=Mar+01%2C+2014&output=csv

但是这会出现一个错误,提示“请求的URL在这个服务器上没有找到”。你可以查看历史数据,网址是:

http://www.google.com/finance/historical?q=HKG%3A0700&startdate=Jan+01%2C+2014&enddate=Mar+01%2C+2014

但是看起来你无法获取到csv文件。

你可以看到在pandas/io/data.py中,它是如何创建这个网址的:

# www.google.com/finance/historical?q=GOOG&startdate=Jun+9%2C+2011&enddate=Jun+8%2C+2013&output=csv
url = "%s%s" % (_HISTORICAL_GOOGLE_URL,
                urlencode({"q": sym,
                           "startdate": start.strftime('%b %d, ' '%Y'),
                           "enddate": end.strftime('%b %d, %Y'),
                           "output": "csv"}))

撰写回答