Yahoo! Finance财经数据PYTHON临时读取方法
本篇文章转自简书: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

在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("https://chart.yahoo.com/table.csv?s=IBM",verify=False)
原数据提取方法三:
from matplotlib.finance import quotes_historical_yahoo_ochl
date1=(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

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

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 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("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()
运行结果:


作者微信公众号

Yahoo! Finance财经数据PYTHON临时读取方法的更多相关文章
- python 文件读取方法详解
话不多说直接码 # 绝对路径 # f = open('/Users/fangxiang/Downloads/我的古诗.text', mode='r', encoding='utf-8') # cont ...
- Python下载Yahoo!Finance数据
Python下载Yahoo!Finance数据的三种工具: (1)yahoo-finance package. (2)ystockquote. (3)pandas.
- Delphi中使用python脚本读取Excel数据
Delphi中使用python脚本读取Excel数据2007-10-18 17:28:22标签:Delphi Excel python原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...
- 第十二节,TensorFlow读取数据的几种方法以及队列的使用
TensorFlow程序读取数据一共有3种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码来供给数据. 从文件读取数据: 在TensorFlow图的起 ...
- PHP file_get_contents函数读取远程数据超时的解决方法
PHP file_get_contents函数读取远程数据超时的解决方法 投稿:junjie 字体:[增加 减小] 类型:转载 这篇文章主要介绍了PHP file_get_contents函数读取 ...
- python之xml 文件的读取方法
''' xml 文件的读取方法 ''' #!/usr/bin/env python # -*- coding: utf- -*- import xml.etree.ElementTree as ET ...
- python 爬虫数据存入csv格式方法
python 爬虫数据存入csv格式方法 命令存储方式:scrapy crawl ju -o ju.csv 第一种方法:with open("F:/book_top250.csv" ...
- Python财经数据接口包TuShare的使用
安装TuShare 方式1:pip install tushare 方式2:访问https://pypi.python.org/pypi/tushare/下载安装 方式3:将源代码下载到本地pytho ...
- python之读取yaml数据
一.yaml简介 yaml:一种标记语言,专门用来写配置文件. 二.yaml基础语法 区分大小写: 使用缩进表示层级关系: 使用空格键缩进,而非Tab键缩进 缩进的空格数目不固定,只需要相同层级的元素 ...
随机推荐
- weiwo.wxmmd.com将您重定向的次数过多。尝试清除 Cookie.
折腾了很久,最后更换PHP版本解决了,我的项目用的tp3.1.2,出现上图问题时的php版本是7.1,换回5.6就没有这个问题.希望能为大家提供一个思路.
- python3 备份mysql小程序
为了保证数据安全,一般都会定期备份数据库,备份数据库也有自己的命令可以执行,下面就是一个每天备份mysql数据库的一个小程序. mysql备份的命令如下: mysqldump -uroot -p123 ...
- C语言的 32个关键之和9个控制语言之关键字
auto break case char const continue default do double else enum extern float for goto ...
- ubuntu常用命令解释
1.seq 用于产生一个整数到另一个整数之间所有的整数,如:seq 3 5 输出:3 4 5 注:如果参数为一个整数,则输出1至这个数之间的所有整数 2.tee [-a] file 从标准输入设备读取 ...
- 20145326 《Java程序设计》第10周学习总结
教材学习内容总结 网络编程 •网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. •程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴. •在发送 ...
- NOIP2016 T4 魔法阵 暴力枚举+前缀和后缀和优化
想把最近几年的NOIP T4都先干掉,就大概差16年的,所以来做一做. 然后这题就浪费了我一整天QAQ...果然还是自己太弱了QAQ 点我看题 还是pa洛谷的... 题意:给m个物品,每个物品有一个不 ...
- 【bzoj5170】Fable(树状数组)
题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=5170 我们会发现,经过一轮冒泡后,若a[i]的前面有比它大的数,就一定会有一个被丢到后 ...
- c#pdf查看器
Free Spire.PDF for .NET is a Community Edition of the Spire.PDF for .NET, which is a totally free PD ...
- Python学习札记(四十一) IO 1
参考:IO NOTE A.Pre 1.IO在计算机中指Input/Output,也就是输入和输出. 2.IO编程中,Stream(流)是一个很重要的概念,可以把流想象成一个水管,数据就是水管里的水,但 ...
- HDU 2732 Leapin' Lizards(最大流)
http://acm.hdu.edu.cn/showproblem.php?pid=2732 题意: 给出n行的网格,还有若干只蜥蜴,每只蜥蜴一开始就在一个格子之中,并且给出蜥蜴每次的最大跳跃长度d. ...