Yahoo! Finance財經資料PYTHON臨時讀取方法

來源:互聯網
上載者:User

標籤:瀏覽器   taf   https   -o   pack   parse   api   nload   開源項目   

本篇文章轉自簡書:http://www.jianshu.com/p/85d563d326a9

這段時間在看量化策略,找到了一個比較不錯的開源項目,但是yahoo金融的資料來源一直沒有找到,在網上找到了這篇文章,分享一下。文章最下方是原作者的號,有想打賞的自便~~

 

Yahoo! Finance提供國內外財經資料,PYTHON通常藉助於pandas或者matplotlib進行資料讀取。

由於2017年5月16日Yahoo!單方面進行了API升級,原資料介面已下線。

原URL格式:https://chart.yahoo.com/table.csv?s=IBM
現調整為:https://query1.finance.yahoo.com/v7/finance/download/IBM?period1=1492611801&period2=1495203801&interval=1d&events=history&crumb=NMhMTCv7QpM


yahoo.jpg

在pandas及matplotlib yahoo finance補丁發布前,可通過本文提供的臨時解決方案提取資料。

原資料提取方法一:

import pandas.io.data as webIBMStock = web.DataReader(name="IBM", data_source="yahoo",start="2000-1-1")

原資料提取方法二:

import requestss = requests.Session()r = s.get("https://chart.yahoo.com/table.csv?s=IBM",verify=False)

原資料提取方法三:

from matplotlib.finance import quotes_historical_yahoo_ochldate1=(2013, 1, 1)date2=(2013, 12,31)price=quotes_historical_yahoo_ochl(‘IBM‘, date1, date2)

PYTHON臨時解決方案:
Step1. 通過瀏覽器擷取訪問yahoo時的cookie值

https://finance.yahoo.com/quote/IBM/history?p=IBM

Chrome


cookies.jpg

Step2. 右鍵點擊download,取得crumb值

https://query1.finance.yahoo.com/v7/finance/download/IBM?period1=1492611801&period2=1495203801&interval=1d&events=history&crumb=NMhMTCv7QpM


crumb.jpg

Step3. 使用unix time替換起止日期

程式碼範例(Python 2.7.13 |Anaconda 4.3.1 (64-bit)):

# -*- coding: utf-8 -*-"""Created on Fri May 19 2017@author: vincentqiao"""import requestsimport timeimport pandas as pdimport matplotlib.pyplot as pltdef datetime_timestamp(dt):     time.strptime(dt, ‘%Y-%m-%d %H:%M:%S‘)     s = time.mktime(time.strptime(dt, ‘%Y-%m-%d %H:%M:%S‘))     return str(int(s))s = requests.Session()#Replace B=xxxxcookies = dict(B=‘c650m5hchrhii&b=3&s=tk‘)#Replace crumb=yyyycrumb = ‘NMhMTCv7QpM‘begin = datetime_timestamp("2014-01-01 09:00:00")end = datetime_timestamp("2017-04-30 09:00:00")r = s.get("https://query1.finance.yahoo.com/v7/finance/download/IBM?period1="+begin+"&period2="+end+"&interval=1d&events=history&crumb="+crumb,cookies=cookies,verify=False)f = open(‘IBM.csv‘, ‘w‘)f.write(r.text)f.close()    es = pd.read_csv(‘IBM.csv‘, index_col=0,parse_dates=True, sep=",", dayfirst=True)data = pd.DataFrame({"IBM" : es["Adj Close"][:]}) print(data.info())data.plot(subplots=True, grid=True, style="b", figsize=(8, 6))plt.show()

運行結果:
?


 

作者公眾號


qrcode_small.jpg

Yahoo! Finance財經資料PYTHON臨時讀取方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.