栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python读取Yahoo股票数据方法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python读取Yahoo股票数据方法

由于yahoo已经中止了大陆地区的服务,所以原来使用pandas_datareader模块,以及升级版本的yfinance模块,包括许多网络上介绍的方法,读取yahoo股票数据都是失败的,可能是yahoo接口变化引起的。经过两天的在Google查找终于找到解决方案,需要以下几步准备:

1.解决上网的问题,这是必须;

2.引入import io, requests , pandas as pd包,由于最新URLLib3最新库访问Https会报错,必须将URLLib3的版本从新版本降低到1.25.11 以下(pip install urllib3==1.25.7 ),这时使用 requests 的get方法读取Yahoo数据。

3.通过get函数访问https://query1.finance.yahoo.com/v7/finance/download/得到一个excel文件,然后使用pandas.read_csv函数生成dataframe

def fetch(ticker, start="2022-01-01", end="2022-02-02",intervalstr="1d"):
    headers = {
        'User-Agent': 
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) 
         AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 
         Safari/601.3.9'
    }

    url = "https://query1.finance.yahoo.com/v7/finance/download/" + str(ticker)
    x = int(datetime.strptime(start, '%Y-%m-%d').timestamp())
    y = int(datetime.strptime(end, '%Y-%m-%d').timestamp())
    url += "?period1=" + str(x) + "&period2=" + str(y) + 
     "&interval="+intervalstr+"&events=history&includeAdjustedClose=true"
    
    print(url)
   
    r = requests.get(url, headers=headers,verify=False)
    pd1 = pd.read_csv(io.StringIO(r.text), index_col=0, parse_dates=True)
    return pd1

4.在yahoo我们免费只能取得股票的每天行情数据,其它一些基本数据,更多的数据被yahoo移到finance plus 那么更多的股票数据必须花钱才能才能拿到。国内数据有tushare,baostock 包可以使用。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/958475.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号