python股票数据分析_用Python抓取新浪的股票数据「建议收藏」

最近做数据分析,先是找到了Tushare这个免费开源的第三方财经包,但后来用了几天之后发现,它的日交易历史数据有时候有不准确的情况,查看源代码发现,这个包的数据源是凤凰财经,而对比凤凰网站其站点的数据本身就是有出入的,所以到也不是Tushare的问题。于是百度了一圈,发现很多网友都是获取新浪的股票数据,包括其历史数据和实时数据。于是乎试了一下,发现速度还挺快,没有具体去测时间但从感官上要比Tush…

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

最近做数据分析,先是找到了Tushare这个免费开源的第三方财经包,但后来用了几天之后发现,它的日交易历史数据有时候有不准确的情况,查看源代码发现,这个包的数据源是凤凰财经,而对比凤凰网站其站点的数据本身就是有出入的,所以到也不是Tushare的问题。于是百度了一圈,发现很多网友都是获取新浪的股票数据,包括其历史数据和实时数据。于是乎试了一下,发现速度还挺快,没有具体去测时间但从感官上要比Tushare获取的凤凰数据要快得多。并且数据也很丰富,囊括了每只票自上市以来的所有数据,对此Tushare貌似只有三年数据。当然,新浪数据也有不足的地方,细节上没凤凰数据那么丰富,没有价MA5、MA10以及量MA5、MA10等等,最重要的还是缺少每天的交易额。所幸我目前计算所需的数据里还不包括每天交易额。

新浪财经的数据接口地址是:http://money.finance.sina.com.cn/quotes_service/api/jsonp_v2.php/var=/CN_MarketData.getKLineData?symbol=sz000001&scale=240&ma=no&datalen=60。在地址里symbol指的是股票代码,这里需要注意的是不能只填数字代码,还需要把交易市场的前缀加上去,比如sz000001指的是平安银行,而sh000001则是上证指数;scale表示的是时间长度,以分钟为基本单位,输入240就表示下载日K线数据,60就是小时K线数据,貌似最短时间是5分钟,并没有提供分钟数据;datalen则是获取数据的条数,在日K线的时间长度了,datalen就是获取60天日K数据,当然也可以获取60小时K数据。

人生苦短,我用Python,所以代码就用它了,其实以前一直是用世界上最好的语言PHP 的,这是为了做数据分析才开始学着用Python,代码粗糙了些,返回的是个列表,每笔数据则是字典,将就着看吧。

import urllib.request

links = ‘http://money.finance.sina.com.cn/quotes_service/api/jsonp_v2.php/var=/CN_MarketData.getKLineData?symbol=’ + code + ‘&scale=’ + str(scale) + ‘&ma=no&datalen=’+str(datalen)

histData = urllib.request.urlopen(links).read()

histData = str(histData).split(‘[‘)[1]

histData = histData[1:len(histData) – 4].split(‘},{‘)

datas = []

for i in range(0, len(histData)):

column = {}

dayData = histData[i].split(‘,’)

for j in range(0, len(dayData)):

field = dayData[j].split(‘:”‘)

if field[0] == ‘day’:

column[‘date’] = field[1].replace(‘”‘, ”)

else:

column[field[0]] = field[1].replace(‘”‘, ”)

datas.append(column)

return datas

PS:这里要说明的是新浪默认字段里,日期字段名称是day,个人觉得很是膈应,如果是小时数据或者5分钟数据还叫day岂不难受?所以改成了 date,其实没什么大的意义,个人喜好而已。

实时数据获取方式和历史数据差别不大,需要的也是完整代码,地址是:http://hq.sinajs.cn/list=sz000001,不同的是实时数据可以多支同时获取的,代码之间用逗号隔开就可以了,经过实验,貌似最多一次可以获取100只票的实时数据。

links = ‘http://hq.sinajs.cn/list=’ + codes

realTimeData = urllib.request.urlopen(links).read()

realTimeData = realTimeData.decode(‘gbk’).replace(‘”‘,”).split(‘\n’)

data = {}

for i in range(len(realTimeData)-1):

if len(realTimeData[i]) > 0:

data[realTimeData[i].split(‘=’)[0].split(‘_’)[2][2:]] = realTimeData[i].split(‘=’)[1].split(‘,’)[:-1]

return data

PS:大家获取可别太多线程,我试过,会被封。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/126141.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 深度学习超分辨率重建(总结)[通俗易懂]

    本文为概述,详情翻看前面文章。1.SRCNN:—2,3改进开山之作,三个卷积层,输入图像是低分辨率图像经过双三次(bicubic)插值和高分辨率一个尺寸后输入CNN。图像块的提取和特征表示,特征非线性映射和最终的重建。使用均方误差(MSE)作为损失函数。2.FSRCNN特征提取:低分辨率图像,选取的核9×9设置为5×5。收缩:1×1的卷积核进行降维。非线性映射:用两个串联的3×3的卷积核可以…

  • pip源配置

    pip源配置pip源配置1、使用配置文件配置文件[global]trusted-host=mirrors.aliyun.comindex-url=http://mirrors.aliyun.com/pypi/simple/配置文件放置位置Linux下:放在~/.pip/pip.confwindows下:用户文件夹下\pip\pip.ini2、使用命令行临时改变pip源pipinstall-i–trusted-hostpackage例如pipinstall-ihttp://

  • 临时关闭Mysql ONLY_FULL_GROUP_BY

    临时关闭Mysql ONLY_FULL_GROUP_BY

  • 制作initramfs镜像_原版镜像和引导镜像

    制作initramfs镜像_原版镜像和引导镜像Linuxkernel在自身初始化完成之后,需要能够找到并运行第一个用户程序(这个程序通常叫做“init”程序)。用户程序存在于文件系统之中,因此,内核必须找到并挂载一个文件系统才可以成功完成系统的引导过程。在grub中提供了一个选项“root=”用来指定第一个文件系统,但随着硬件的发展,很多情况下这个文件系统也许是存放在USB设备,SCSI设备等等多种多样的设备之上,如果需要正确引导,US

  • JSP实现成语接龙「建议收藏」

    JSP实现成语接龙「建议收藏」首页:<%–CreatedbyIntelliJIDEA.User:zddDate:2019/11/18Time:10:15TochangethistemplateuseFile|Settings|FileTemplates.–%><%@pagecontentType=”text/html;chars…

  • 简单jquery写css样式[通俗易懂]

    简单jquery写css样式[通俗易懂]简单jquery写css样式

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号