48

ヤフーファイナンスやグーグルファイナンスから過去の株価を自動でダウンロードする方法はありますか(csv形式)? できればPythonで。

4

6 に答える 6

106

Python でこのような時系列を扱う場合pandasは、不可欠です。良いニュースがあります。Yahoo: の履歴データ ダウンローダが付属しています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'])

ドキュメントの例を次に示しpandasます。

パンダ >= 0.19 の更新:

pandas.io.dataモジュールはそれ以降削除されていますpandas>=0.19。代わりに、別のpandas-datareaderパッケージを使用する必要があります。インストール:

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'])

Google Finance からのダウンロードにも対応しています。

のドキュメントに詳細がありますpandas-datareader

于 2012-09-20T10:05:41.657 に答える
42

簡単な答え: はい。Python のurllibを使用して、必要な株式の履歴データ ページを取得します。Yahoo! ファイナンス; Google は、信頼性が低く、データ カバレッジが少なく、取得した後の使用方法がより制限されています。また、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()
于 2012-09-14T23:29:54.900 に答える
2

方法を知っていれば簡単です。

import yfinance as yf
df = yf.download('CVS', '2015-01-01')
df.to_csv('cvs-health-corp.csv')

プロットしたい場合:

import finplot as fplt
fplt.candlestick_ochl(df[['Open','Close','High','Low']])
fplt.show()

ここに画像の説明を入力

于 2020-10-15T14:22:11.543 に答える