Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python 股票历史数据(python获取股票历史数据)

python 股票历史数据(python获取股票历史数据)

作者头像
全栈程序员站长
发布于 2022-08-01 05:44:12
发布于 2022-08-01 05:44:12
2K02
代码可运行
举报
运行总次数:2
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

因为最近需要用到股市的各种指数数据,刚开始想的是从同花顺等交易软件直接导出,结果发现要用滚轮滚到最开始的日期,这过于繁琐了,我对于这种重复性的劳动一向不耐烦,而且这种方法在以后每日更新的时候也很不方便。所以我把视线转向了网上的各种api。网上比较普遍的主要有两种,一种是新浪的api,一种是雅虎的api。新浪的api很方便,速度也很快,不过就网上的资料而言,似乎只能提取当天的数据。雅虎的api功能更齐全,但是连接速度比较慢,有时候一个连接请求都要10多秒甚至20秒(原谅我的渣网速-,-)这对于需要大量股票数据的我来说显然不可接受。后来发现从网易财经可以下载股票和指数的历史数据。通过在chrome的调试工具中观察请求信息,发现网址为 http://quotes.money.163.com/service/chddata.html?code=0000001&start=19901219&end=20150911&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;VOTURNOVER;VATURNOVER 这里0000001指的是上证指数。注意这串数字要分0和000001两部分看。0代表sh,1代表sz。所以0000001其实是sh000001的意思。同理,0 000300也就是sh000300 沪深300的代码。后面的start和end没什么问题。fields选项中,TCLOSE,HIGH,LOW,TOPEN分别表示当日的收盘,最高,最低,开盘价;LCLOSE表示昨日收盘价。CHG,PCHG,VOTURNOVER,VAT分别表示涨跌额,涨跌幅,成交量,成交金额。如果你在浏览器中直接输入网址的话,会下载一个csv文件。如果直接用urllib.request来打开的话,会得到一长串字符串,里面包含了所有的数据,如下所示。需要自己用str.split(‘\r\n’)来截取

日期,股票代码,名称,收盘价,最高价,最低价,开盘价,前收盘,涨跌额,涨跌幅,成交量,成交金额 2015-09-11,’000001,上证指数,3200.234,3223.762,3163.449,3189.479,3197.893,2.341,0.0732,224557822,2.52769467178e+11 2015-09-10,’000001,上证指数,3197.893,3243.281,3178.904,3190.553,3243.089,-45.196,-1.3936,273261759,2.99581090523e+11 2015-09-09,’000001,上证指数,3243.089,3256.743,3165.696,3182.552,3170.452,72.637,2.2911,375327978,4.12991428267e+11 2015-09-08,’000001,上证指数,3170.452,3174.709,3011.117,3054.444,3080.42,90.032,2.9227,255415465,2.63910382052e+11 2015-09-07,’000001,上证指数,3080.42,3217.579,3066.304,3149.38,3160.167,-79.747,-2.5235,296468114,3.02689722336e+11

有几点需要指出,这里的指数代码前会加个 ’ 比如上面是’000001要把那个 ’ 去掉。还有,有些时候涨跌额和涨跌幅的值是None,简直莫名其妙,只能根据当日收盘价和前一天的收盘价自己补全;还有成交金额有几天的值也是None,这个似乎没法自己补,处理的时候需要特别注意

下面是代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import urllib,time,

def get_page(url):  #获取页面数据
    req=urllib.request.Request(url,headers={
        'Connection': 'Keep-Alive',
        'Accept': 'text/html, application/xhtml+xml, */*',
        'Accept-Language':'zh-CN,zh;q=0.8',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'
    })
    opener=urllib.request.urlopen(req)
    page=opener.read()
    return page

def get_index_history_byNetease(index_temp):
    """ :param index_temp: for example, 'sh000001' 上证指数 :return: """
    index_type=index_temp[0:2]
    index_id=index_temp[2:]
    if index_type=='sh':
        index_id='0'+index_id
    if index_type=="sz":
        index_id='1'+index_id
    url='http://quotes.money.163.com/service/chddata.html?code=%s&start=19900101&end=%s&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;VOTURNOVER;VATURNOVER'%(index_id,time.strftime("%Y%m%d"))

    page=get_page(url).decode('gb2312') #该段获取原始数据
    page=page.split('\r\n')
    col_info=page[0].split(',')   #各列的含义
    index_data=page[1:]     #真正的数据

    #为了与现有的数据库对应,这里我还修改了列名,大家不改也没关系
    col_info[col_info.index('日期')]='交易日期'   #该段更改列名称
    col_info[col_info.index('股票代码')]='指数代码'
    col_info[col_info.index('名称')]='指数名称'
    col_info[col_info.index('成交金额')]='成交额'

    index_data=[x.replace("'",'') for x in index_data]  #去掉指数编号前的“'”
    index_data=[x.split(',') for x in index_data]

    index_data=index_data[0:index_data.__len__()-1]   #最后一行为空,需要去掉
    pos1=col_info.index('涨跌幅')
    pos2=col_info.index('涨跌额')
    posclose=col_info.index('收盘价')
    index_data[index_data.__len__()-1][pos1]=0      #最下面行涨跌额和涨跌幅为None改为0
    index_data[index_data.__len__()-1][pos2]=0
    for i in range(0,index_data.__len__()-1):       #这两列中有些值莫名其妙为None 现在补全
        if index_data[i][pos2]=='None':
            index_data[i][pos2]=float(index_data[i][posclose])-float(index_data[i+1][posclose])
        if index_data[i][pos1]=='None':
            index_data[i][pos1]=(float(index_data[i][posclose])-float(index_data[i+1][posclose]))/float(index_data[i+1][posclose])

    # print(col_info)
    return [index_data,col_info]

运行get_index_history_byNetease(‘sh000001’) 就能够得到上证指数所有的历史数据

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126307.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
股票数据API整理
最近在做股票分析系统,数据获取源头成了一大问题,经过仔细的研究发现了很多获取办法,这里整理一下,方便后来者使用。 获取股票数据的源头主要有:数据超市、雅虎、新浪、Google、和讯、搜狐、ChinaStockWebService、东方财富客户端、证券之星、网易财经。 根据最近频繁出现的数据超市,可以无限制获取相关数据,而不再需要使用爬虫等方式获取,这样不仅节省了极大资源,也有利于遍历数据。 列出来相关网站清单,开发者可自行到这些网站查询调用方法。 聚合数据 https://www.juhe.cn/ 百度A
机器学习AI算法工程
2018/03/15
26.2K2
股票数据API整理
股票API
股票数据的获取目前有如下两种方法可以获取: 1. http/javascript接口取数据 2. web-service接口
全栈程序员站长
2022/07/23
6K0
获取A股行情数据方法[通俗易懂]
做股票量化分析,获取股票行情数据是第一步,结合网上的信息,和我用过的一些东西,做个总结。以后有新信息,逐步完善。
全栈程序员站长
2022/07/25
9.5K0
获取股票历史数据(网易163行情接口)[通俗易懂]
获取股票历史数据,通过网易163接口来获取数据,可以获取指数数据,也可以获取股票数据
全栈程序员站长
2022/08/01
5.7K0
新浪实时股票数据接口1
股票数据的获取目前有如下两种方法可以获取: 1. http/javascript接口取数据 2. web-service接口
全栈程序员站长
2022/11/16
5.8K1
新浪实时股票数据接口1
用python教你计算定投能获得多少收益
经常有一些专家告诉你,定投风险小,长期能获得不错的收益。因为投资者在高点时买入的份额较少,而在低处买入的份额较多。
Stanley Sun
2019/09/23
2.1K0
用python教你计算定投能获得多少收益
[股票预测]股票历史数据获取[通俗易懂]
通过参数设置获取日k线、周k线、月k线,以及5分钟、15分钟、30分钟和60分钟k线数据。本接口只能获取近3年的日线数据,适合搭配均线数据进行选股和分析。
全栈程序员站长
2022/09/12
1.6K0
[股票预测]股票历史数据获取[通俗易懂]
Python量化学习-提取证券数据
不知道公众号有多少读者买基金或者炒股,分享一下如何用python获取证券信息 1、网易财经 import requests from lxml import etree headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36' } def parse_url(url):
用户9925864
2022/07/27
9840
Python量化学习-提取证券数据
实战 | 用 Python 选股票,据说可以多挣个20%
本文将使用Python来可视化股票数据,比如绘制K线图,并且探究各项指标的含义和关系,最后使用移动平均线方法初探投资策略。 数据导入 这里将股票数据存储在stockData.txt文本文件中,我们使用pandas.read_table()函数将文件数据读入成DataFrame格式。 其中参数usecols=range(15)限制只读取前15列数据,parse_dates=[0]表示将第一列数据解析成时间格式,index_col=0则将第一列数据指定为索引。 import pandas as pd i
小小科
2018/05/04
2.7K0
实战 | 用 Python 选股票,据说可以多挣个20%
AkShare-股票数据-资金流向
继续扩充昨天更新的资金流数据数据:个股资金流、个股资金流排名、大盘资金流、板块资金流排名
数据科学实战
2020/05/20
2.3K0
码农技术炒股之路——数据源选择
        在给本系列博文拟定标题时,我原先写下的是《股票交易信息获取及分析系统》。之后感觉这个名字过于高大上,又不自觉的在草稿中写下《码农技术炒股之路》。这个名称让我会心一笑,因为它即突出了我的身份,又点名了本系列博文要介绍的东西——技术炒股。最后“之路”一词可以让我好好介绍下这个项目的前因后果,希望大家也感受下这个项目的温度,因为它的产生并非我一人杜撰出来的愿景。(转载请指明出于breaksoftware的csdn博客)
方亮
2019/01/16
1.6K0
如何获取沪深股市历史数据并入库
作为一个技术男,一开始总想着怎么去爬数据。然而一旦发现有免费的数据接口时,瞬间感觉爬来的不香了。。。
全栈程序员站长
2022/09/12
9960
如何获取沪深股市历史数据并入库
python Panads获取股票数据及处理
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
多凡
2019/11/01
2.6K0
股票交易数据采集+数据可视化(Python爬取某网站股票数据,附代全部代码)
前言 我国股票投资者数量为15975.24万户, 如此多的股民热衷于炒股,首先抛开炒股技术不说, 那么多股票数据是不是非常难找,找到之后是不是看着密密麻麻的数据是不是头都大了? 今天带大家爬取雪球平台
松鼠爱吃饼干
2021/12/04
4.4K1
股票交易数据采集+数据可视化(Python爬取某网站股票数据,附代全部代码)
Python高效编程(四)
实际编程和面试都会遇到的典型问题。 图片来源于网络 如何读写文本文件 # python2 s = u'你好' f = open('py2.txt','w') f.write(s.encode('gb
dreamkong
2018/06/21
8750
python 获取股票数据 tushare使用
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
多凡
2019/11/01
2.1K0
AKShare-股票数据-历史行情数据
本次更新沪深 A 股的历史行情数据,本次采用网易的数据,该接口可以获取总市值、流通市值数据,可以补充东财和新浪的数据,但是该接口不能返回复权数据。
数据科学实战
2022/03/15
2.8K0
AKShare-股票数据-历史行情数据
AkShare-指数数据-国证指数
经深交所授权,深证信息负责“深证”系列指数的规划研发、日常运维和市场营销等业务,打造以“深证成指+深证100、创业板指”(“1+2”)为核心的“深证”系列指数体系,反映战略新兴产业和新经济行业特点,凸显深市成长性特色,服务资本市场发展。同时,深证信息自2002年以来建立“国证”系列指数体系,率先推出覆盖本地和境外市场的系列指数,着力构建全球资产配置的“中国方案”,服务市场多元化需求。
数据科学实战
2020/12/08
6650
AkShare-指数数据-国证指数
AKShare-股票数据-北交所历史行情
作者寄语 本次更新股票历史行情的数据接口,增加对北交所行情的支持 更新接口 "stock_zh_a_hist" # 历史行情数据-东财 历史行情数据-东财 接口: stock_zh_a_hist
数据科学实战
2022/01/12
1.3K0
AKShare-股票数据-北交所历史行情
【量化分析--获取股票数据实例代码教程01】Python、JavaScript(Node.js)、Java、C#和Ruby五种主流语言的实例代码给大家演示一下如
最近一两年,股票量化分析越来越受欢迎了。想要入行,首先得搞定股票数据。毕竟,所有量化分析都是建立在数据之上的,实时交易、历史交易、财务、基本面,这些数据咱们都得有。咱们的目标就是挖掘这些数据中的价值,来指导咱们的投资策略。
用户7598179
2024/09/06
2600
【量化分析--获取股票数据实例代码教程01】Python、JavaScript(Node.js)、Java、C#和Ruby五种主流语言的实例代码给大家演示一下如
推荐阅读
相关推荐
股票数据API整理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验