本篇文章转自简书: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 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

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 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()

运行结果:

 

作者微信公众号

qrcode_small.jpg

Yahoo! Finance财经数据PYTHON临时读取方法的更多相关文章

  1. python 文件读取方法详解

    话不多说直接码 # 绝对路径 # f = open('/Users/fangxiang/Downloads/我的古诗.text', mode='r', encoding='utf-8') # cont ...

  2. Python下载Yahoo!Finance数据

    Python下载Yahoo!Finance数据的三种工具: (1)yahoo-finance package. (2)ystockquote. (3)pandas.

  3. Delphi中使用python脚本读取Excel数据

    Delphi中使用python脚本读取Excel数据2007-10-18 17:28:22标签:Delphi Excel python原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...

  4. 第十二节,TensorFlow读取数据的几种方法以及队列的使用

    TensorFlow程序读取数据一共有3种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码来供给数据. 从文件读取数据: 在TensorFlow图的起 ...

  5. PHP file_get_contents函数读取远程数据超时的解决方法

    PHP file_get_contents函数读取远程数据超时的解决方法 投稿:junjie 字体:[增加 减小] 类型:转载   这篇文章主要介绍了PHP file_get_contents函数读取 ...

  6. python之xml 文件的读取方法

    ''' xml 文件的读取方法 ''' #!/usr/bin/env python # -*- coding: utf- -*- import xml.etree.ElementTree as ET ...

  7. python 爬虫数据存入csv格式方法

    python 爬虫数据存入csv格式方法 命令存储方式:scrapy crawl ju -o ju.csv 第一种方法:with open("F:/book_top250.csv" ...

  8. Python财经数据接口包TuShare的使用

    安装TuShare 方式1:pip install tushare 方式2:访问https://pypi.python.org/pypi/tushare/下载安装 方式3:将源代码下载到本地pytho ...

  9. python之读取yaml数据

    一.yaml简介 yaml:一种标记语言,专门用来写配置文件. 二.yaml基础语法 区分大小写: 使用缩进表示层级关系: 使用空格键缩进,而非Tab键缩进 缩进的空格数目不固定,只需要相同层级的元素 ...

随机推荐

  1. POJ3070:Fibonacci(矩阵快速幂模板题)

    http://poj.org/problem?id=3070 #include <iostream> #include <string.h> #include <stdl ...

  2. HDU5086:Revenge of Segment Tree(规律题)

    http://acm.hdu.edu.cn/showproblem.php?pid=5086 #include <iostream> #include <stdio.h> #i ...

  3. Qt编译出错:“Cannot find file...... .pro."

    刚接触Qt,使用Qt5.7时,出现如下编译错误: 其实原因很简单,就是Qt工程目录不能有“中文”.“全角符字符”[暂时发现这两种情况].

  4. (1)了解cocostudio基础

    操作界面   Cocos Studio的界面主要分为菜单栏.工具栏.对象面板.资源面板.画布面板.属性面板.动画面板.输出窗口.状态栏九部分组成,如下图: 菜单栏   菜单栏为Cocos Studio ...

  5. javascript模式(1)--私有成员

    javascript是基于对象的一门语言,没有想java等语言那样子拥有封装的特性.但是javascript可以通过闭包来进行模拟. 1.构造函数与私有成员 可以用构造函数形成一个闭包,实现内部成员的 ...

  6. SQL学习笔记五之MySQL索引原理与慢查询优化

    阅读目录 一 介绍 二 索引的原理 三 索引的数据结构 四 聚集索引与辅助索引 五 MySQL索引管理 六 测试索引 七 正确使用索引 八 联合索引与覆盖索引 九 查询优化神器-explain 十 慢 ...

  7. Android用PhoneGap封装webapp在android代码中实现连按退出和loadingpage

    用PhoneGap封装后的程序有一些瑕疵,比如启动时黑屏,菜单按钮和返回按钮不好控制等. PhoneGap也在github提交的它的源码(版本:2.8): https://github.com/apa ...

  8. 学习Zookeeper之第3章Zookeeper内部原理

    第 3 章 Zookeeper 内部原理 3.1 选举机制 3.2 节点类型 3.3 stat 结构体 3.4 监听器原理   1)监听原理详解   2)常见的监听 3.5 写数据流程 第 3 章 Z ...

  9. linux下如何kill tty终端

    答:一共有两个步骤,如下: 1.列出打开的终端 who 2.kill需要kill的tty终端 pkill -kill -t pts/2

  10. Firefox管理已经保存的账号和密码

    https://support.mozilla.org/en-US/kb/password-manager-remember-delete-change-and-import You can easi ...