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

    一.基本概念 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计. 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语:Kafk ...

  2. Deep Learning(2)

    二.Deep Learning的基本思想和方法 实际生活中,人们为了解决一个问题,如对象的分类(对象可是是文档.图像等),首先必须做的事情是如何来表达一个对象,即必须抽取一些特征来表示一个对象,如文本 ...

  3. Winform开发之ComboBox和ComboBoxEdit控件绑定key/value数据

    使用 ComboBox 控件绑定key/value值: 因为 ComboBox 是有 DataSource 属性的,所以它可以直接绑定数据源,如 DataTable.ListItem 等. 使用 Da ...

  4. UnicodeDecodeError: 'ascii' codec can't decode byte 0xbb in position 51: ord

    1.问题描述:一个在Django框架下使用Python编写的定时更新项目,在Windows系统下测试无误,在Linux系统下测试,报如下错误: ascii codec can't decode byt ...

  5. Mybatis 之动态代理

    使用Mybatis 开发Web 工程时,通过Mapper 动态代理机制,可以只编写接口以及方法的定义. 如下: 定义db.properties driver=oracle.jdbc.OracleDri ...

  6. PHP文件锁 解决并发问题

    使用多线程或是多进程时. 难免会遇到并发问题. 处理简单的并发可以使用这个办法来解决 flock($fp = fopen($lock, 'w+'), LOCK_EX | LOCK_NB)   or e ...

  7. RC1意思

    软件各种版本的表示 alpha 内部测试版 beta 外部测试版 demo 演示版 Enhance 增强版或者加强版 属于正式版 Free 自由版 Full version 完全版 属于正式版 sha ...

  8. PHP多进程学习(二)__fork起多个子进程,父进程的阻塞与非阻塞

    先简单来了解一下多进程 [来初步了解一下PHP多进程及简单demo] php的多进程是不是可以无限制的fork子进程?fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的 ...

  9. Eclipse配置tomcat8.5.7报错:The Apache Tomcat installation at this directory is version 8.5.27. A Tomcat 8.0 installation is...

    Eclipse配置tomcat8.5.7报错:The Apache Tomcat installation at this directory is version 8.5.27. A Tomcat ...

  10. 2017 java期末上机练习

    仅供参考! 一.最大值.最小值.平均数 package examination; import java.util.Arrays; import java.util.Scanner; /** * 1. ...