有没有一种方法可以自动从雅虎金融或谷歌金融(csv格式)下载股票的历史价格?最好在Python中。自动从雅虎金融在python下载历史股票价格
回答
简答:是的。使用Python的urllib来拉取所需股票的历史数据页面。跟雅虎一起去吧!金融;谷歌的可靠性较低,数据覆盖范围较小,并且限制性较强,一旦拥有它就可以使用它。另外,我相信Google明确禁止您在ToS中抓取数据。
较长的答案:这是我用来提取特定公司的所有历史数据的脚本。它为特定的股票代码拉动历史数据页面,然后将其保存到由该符号命名的csv文件中。您必须提供自己想要的股票代码列表。
import urllib
base_url = "http://ichart.finance.yahoo.com/table.csv?s="
def make_url(ticker_symbol):
return base_url + ticker_symbol
output_path = "C:/path/to/output/directory"
def make_filename(ticker_symbol, directory="S&P"):
return output_path + "/" + directory + "/" + ticker_symbol + ".csv"
def pull_historical_data(ticker_symbol, directory="S&P"):
try:
urllib.urlretrieve(make_url(ticker_symbol), make_filename(ticker_symbol, directory))
except urllib.ContentTooShortError as e:
outfile = open(make_filename(ticker_symbol, directory), "w")
outfile.write(e.content)
outfile.close()
当你要与在Python这样的时间序列的工作,pandas
是必不可少的。这里有个好消息:它附带了雅虎的历史数据下载器:pandas.io.data.DataReader
。
from pandas.io.data import DataReader
from datetime import datetime
ibm = DataReader('IBM', 'yahoo', datetime(2000, 1, 1), datetime(2012, 1, 1))
print(ibm['Adj Close'])
Here's an example from the pandas
documentation.
更新大熊猫> = 0.19:
的pandas.io.data
模块已从pandas>=0.19
起除去。相反,你应该使用单独的pandas-datareader
package。与安装:
pip install pandas-datareader
然后你就可以在Python中做到这一点:
import pandas_datareader as pdr
from datetime import datetime
ibm = pdr.get_data_yahoo(symbols='IBM', start=datetime(2000, 1, 1), end=datetime(2012, 1, 1))
print(ibm['Adj Close'])
当我尝试它时,导入工作正常,但当我调用'goog'行时,我收到一个错误:“IOError:3次尝试后,雅虎没有返回200的URL'http://ichart.finance.yahoo .com/table.csv?s = GOOG&a = 0&b = 1&c = 2000&d = 0&e = 1&f = 2012&g = d&ignore = .csv'“这怎么解决? – Cleb
和Cleb一样。没有返回200状态代码 – bluerubez
@Cleb似乎是因为'GOOG'不被API接受(不明白为什么,在移动到Alphabet GOOG ticker后)。适用于'GOOGL'和各种其他符号。为防万一,调整示例。 –
扩展@Def_Os's答案与实际演示...
正如@Def_Os已经说过的 - 使用Pandas Datareader使得这一任务真正的乐趣
In [12]: from pandas_datareader import data
拉动所有可用的历史数据为AAPL
从1980-01-01
#In [13]: aapl = data.DataReader('AAPL', 'yahoo', '1980-01-01')
# yahoo api is inconsistent for getting historical data, please use google instead.
In [13]: aapl = data.DataReader('AAPL', 'google', '1980-01-01')
前5行
In [14]: aapl.head()
Out[14]:
Open High Low Close Volume Adj Close
Date
1980-12-12 28.750000 28.875000 28.750 28.750 117258400 0.431358
1980-12-15 27.375001 27.375001 27.250 27.250 43971200 0.408852
1980-12-16 25.375000 25.375000 25.250 25.250 26432000 0.378845
1980-12-17 25.875000 25.999999 25.875 25.875 21610400 0.388222
1980-12-18 26.625000 26.750000 26.625 26.625 18362400 0.399475
开始最后5行
In [15]: aapl.tail()
Out[15]:
Open High Low Close Volume Adj Close
Date
2016-06-07 99.250000 99.870003 98.959999 99.029999 22366400 99.029999
2016-06-08 99.019997 99.559998 98.680000 98.940002 20812700 98.940002
2016-06-09 98.500000 99.989998 98.459999 99.650002 26419600 99.650002
2016-06-10 98.529999 99.349998 98.480003 98.830002 31462100 98.830002
2016-06-13 98.690002 99.120003 97.099998 97.339996 37612900 97.339996
保存所有的数据作为CSV文件
In [16]: aapl.to_csv('d:/temp/aapl_data.csv')
d:/温度/ aapl_data。CSV - 5个第一排
Date,Open,High,Low,Close,Volume,Adj Close
1980-12-12,28.75,28.875,28.75,28.75,117258400,0.431358
1980-12-15,27.375001,27.375001,27.25,27.25,43971200,0.408852
1980-12-16,25.375,25.375,25.25,25.25,26432000,0.378845
1980-12-17,25.875,25.999999,25.875,25.875,21610400,0.38822199999999996
1980-12-18,26.625,26.75,26.625,26.625,18362400,0.399475
...
已经有一个图书馆在Python称为yahoo_finance所以你需要先下载该库使用以下命令行:
sudo pip install yahoo_finance
然后,一旦你已经安装在yahoo_finance库,这里是一个示例代码,将下载您从雅虎财经需要的数据:
#!/usr/bin/python
import yahoo_finance
import pandas as pd
symbol = yahoo_finance.Share("GOOG")
google_data = symbol.get_historical("1999-01-01", "2016-06-30")
google_df = pd.DataFrame(google_data)
# Output data into CSV
google_df.to_csv("/home/username/google_stock_data.csv")
这应该这样做。让我知道它是否有效。
只是好奇 - 雅虎金融提供的pandas_datareader(反之亦然)有什么好处? – Mathematician
当时我是唯一可以找到关于拉动雅虎财经股票价格的图书馆。但是,它似乎没有工作了。 – Naufal
确认 - 21/02/2018 - 'yahoo_finance'不再有效。 – 3kstc
- 1. 雅虎股票API格式
- 2. 如何获取金融雅虎API股票
- 3. 获取股票的价格历史
- 4. retriving股票报价与雅虎财经
- 5. OAuth与雅虎金融
- 6. 使用BS4从雅虎金融
- 7. 如何将雅虎历史股票数据下载到xls中。格式通过matlab?
- 8. 从雅虎股票网站解析股票推荐评级
- 9. 从雅虎财务获取股票报价
- 10. Quandl从python下载wiki EOD股票价格 - 如何?
- 11. R:从雅虎财经下载历史数据
- 12. 如何在Perl中获取雅虎实时股票报价?
- 13. 如何获得只调整关闭价格从雅虎金融图书馆
- 14. 股票价格数据 - 当前和历史 - 已付/免费
- 15. 谷歌API访问股票/债券价格的历史数据
- 16. 合并历史和现场股票价格数据与Rx
- 17. 雅虎股票API检索趋势股(市场推动者)
- 18. 雅虎股票官方库存api
- 19. 雅虎财经API全部股票?
- 20. 添加股票价格数据帧列表,让你有股票价格列表历史
- 21. 雅虎财经商品股票报价PHP
- 22. 未能通过Ajax获得雅虎股票报价
- 23. 雅虎财经API股票过去的价值
- 24. 谷歌金融JSON股票报价不辍
- 25. 存储股票报价(金融)数据的最佳方法
- 26. 提取EV/EBITDA的问题,从雅虎金融中出售购买股票和净借款
- 27. 美国股票股票价格API
- 28. 金融股
- 29. 如何从雅虎财经获取最高历史价格数据?
- 30. 发票的历史价格表?
查看http://scrape-google-finance.compunect.com/ 这是一个相当新的Google财务开源PHP刮板。 它可以免费使用/修改,您可以从Google下载所有股票价格和所有公司。不应该太难从它学习,并在python中写入相同。 – John