ども♪マコトです。
yahoocom(米国のyahoo)からいつの間にかCSVファイルがpytyonで取得できなくなっていたので、作ってみました。
もし、以下のプログラムで取得できない場合はご連絡ください。
import datetime as dt from datetime import datetime, date import pandas as pd import requests import re import csv import time import os def get_yahoo_crumb_cookie(): """Get Yahoo crumb cookie value.""" res = requests.get('https://finance.yahoo.com/quote/SPY/history') yahoo_cookie = res.cookies['B'] yahoo_crumb = None pattern = re.compile('.*"CrumbStore":\{"crumb":"(?P<crumb>[^"]+)"\}') for line in res.text.splitlines(): m = pattern.match(line) if m is not None: yahoo_crumb = m.groupdict()['crumb'] return yahoo_cookie, yahoo_crumb if __name__ == '__main__': # プロキシの設定(プロキシーが必要な場合はここで宣言。必要ない場合は以下の2行を削除) os.environ["http_proxy"] = "http://ID:PW@proxy.〇〇:ポート番号" os.environ["https_proxy"] = "https://ID:PW@proxy.〇〇:ポート番号" cookie, crumb = get_yahoo_crumb_cookie() # ダウンロードしてきたやつ(ここを変えれば別の指標を取得できます) INDEIES = ["%5EN225", #Nikkei 225 (^N225) "%5EDJI", #Dow Jones Industrial Average (^DJI) "%5EGSPC", #S&P 500 (^GSPC) "%5EIXIC", #NASDAQ Composite (^IXIC) "%5ERUT" ] #Russell 2000 (^RUT) start = int(time.mktime(dt.datetime(1970,1,2).timetuple())) end = int(time.mktime(date.today().timetuple())) #DOWNLOAD_SAVE_DIR = os.getenv("DOWNLOAD_SAVE_DIR") DOWNLOAD_SAVE_DIR = r"C:\data" for ticker in INDEIES: url = "https://query1.finance.yahoo.com/v7/finance/download/%s?period1=%s&period2=%s&interval=1d&events=history&crumb=%s" % (ticker, start, end, crumb) data = requests.get(url, cookies={'B':cookie}) contentType = data.headers['Content-Type'] contentDisposition = data.headers['Content-Disposition'] ATTRIBUTE = 'filename=' fileName = contentDisposition[contentDisposition.find(ATTRIBUTE) + len(ATTRIBUTE):] saveFileName = fileName.replace('.csv',datetime.now().strftime("_%Y%m%d_%H%M%S") + '.csv') saveFilePath = os.path.join(DOWNLOAD_SAVE_DIR, saveFileName) with open(saveFilePath, 'wb') as saveFile: saveFile.write(data.content)
コメント