200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > pythonurllib库获取yahoo财经数据_Yahoo! Finance财经数据PYTHON临时读取方法

pythonurllib库获取yahoo财经数据_Yahoo! Finance财经数据PYTHON临时读取方法

时间:2019-09-23 11:34:58

相关推荐

pythonurllib库获取yahoo财经数据_Yahoo! Finance财经数据PYTHON临时读取方法

本篇文章转自简书:/p/85d563d326a9

这段时间在看量化策略,找到了一个比较不错的开源项目,但是yahoo金融的数据源一直没有找到,在网上找到了这篇文章,分享一下。文章最下方是原作者的微信号,有想打赏的自便~~

Yahoo! Finance提供国内外财经数据,PYTHON通常借助于pandas或者matplotlib进行数据读取。

由于5月16日Yahoo!单方面进行了API升级,原数据接口已下线。

yahoo.jpg

在pandas及matplotlib yahoo finance补丁发布前,可通过本文提供的临时解决方法提取数据。

原数据提取方法一:

import pandas.io.data as web

IBMStock = web.DataReader(name="IBM", data_source="yahoo",start="2000-1-1")

原数据提取方法二:

import requests

s = requests.Session()

r = s.get("/table.csv?s=IBM",verify=False)

原数据提取方法三:

from matplotlib.finance import quotes_historical_yahoo_ochl

date1=(, 1, 1)

date2=(, 12,31)

price=quotes_historical_yahoo_ochl('IBM', date1, date2)

PYTHON临时解决方案:

Step1. 通过浏览器获取访问yahoo时的cookie值

Chrome

cookies.jpg

Step2. 右键点击download,取得crumb值

crumb.jpg

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

代码示例(Python 2.7.13 |Anaconda 4.3.1 (64-bit)):

# -*- coding: utf-8 -*-

"""

Created on Fri May 19

@author: vincentqiao

"""

import requests

import time

import pandas as pd

import matplotlib.pyplot as plt

def 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=xxxx

cookies = dict(B='c650m5hchrhii&b=3&s=tk')

#Replace crumb=yyyy

crumb = 'NMhMTCv7QpM'

begin = datetime_timestamp("-01-01 09:00:00")

end = datetime_timestamp("-04-30 09:00:00")

r = s.get("https://query1./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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。