首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用python从雅虎财经自动下载历史股票价格

用python从雅虎财经自动下载历史股票价格
EN

Stack Overflow用户
提问于 2012-09-15 07:06:16
回答 6查看 128.7K关注 0票数 48

有没有办法从雅虎财经或谷歌财经(csv格式)自动下载股票的历史价格?最好是用Python编写。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-09-15 07:29:55

简短的回答是:是的。使用Python的urllib来获取您想要的股票的历史数据页面。使用Yahoo!金融;谷歌既不太可靠,数据覆盖率也更低,而且一旦拥有它,你如何使用它就会受到更多限制。此外,我相信谷歌明确禁止你在他们的ToS中抓取数据。

更长的答案:这是我用来提取特定公司所有历史数据的脚本。它拉取特定股票代码的历史数据页面,然后将其保存到以该符号命名的csv文件。你必须提供你自己的股票代码列表,你想拉。

代码语言:javascript
运行
复制
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()
票数 42
EN

Stack Overflow用户

发布于 2012-09-20 18:05:42

当您要在Python中处理这样的时间序列时,pandas是必不可少的。好消息是:它为雅虎提供了一个历史数据下载器:pandas.io.data.DataReader

代码语言:javascript
运行
复制
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.

pandas >= 0.19的更新:

pandas>=0.19开始,pandas.io.data模块已被删除。相反,您应该使用单独的pandas-datareader package。安装时使用:

代码语言:javascript
运行
复制
pip install pandas-datareader

然后你可以在Python中做到这一点:

代码语言:javascript
运行
复制
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'])

Downloading from Google Finance is also supported.

There's more in the documentation of pandas-datareader.

票数 106
EN

Stack Overflow用户

发布于 2016-06-14 16:30:57

使用实际演示扩展@Def_Os's答案...

正如@Def_Os已经说过的--使用Pandas Datareader让这项任务变得非常有趣

代码语言:javascript
运行
复制
In [12]: from pandas_datareader import data

1980-01-01拉取AAPL的所有可用历史数据

代码语言:javascript
运行
复制
#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行

代码语言:javascript
运行
复制
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行

代码语言:javascript
运行
复制
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文件

代码语言:javascript
运行
复制
In [16]: aapl.to_csv('d:/temp/aapl_data.csv')

d:/temp/aapl_data.csv -前5行

代码语言:javascript
运行
复制
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
...
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12433076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档