python爬取股票数据——进阶篇

本文介绍了如何使用Python库akshare抓取中国股市全市场的股票历史数据,包括处理大量csv文件和编写代码实现自动化爬取,以满足量化因子验证和回测的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

想必大家对抓取单只股票的历史数据都已驾轻就熟,不管你的数据源是baostock还是akshare,只要按照它们的说明文档来修改,无论抓取分钟线、日线、周线还是前复权、后复权、不复权等等各种姿势的股票数据都相当的简单。但这里有个小小的问题,如果只抓取单只股票的数据,那么我的股票交易软件通达信也能做到啊,甚至通达信下载数据更简单,右键点击下载就好了。

没错,如果你只需要一只或几只股票的历史数据,通达信更简便,但如果你的需求是全市场5000+的股票数据,通达信该如何应对?

有人会发问了:我要这么多数量的股票数据干嘛用呢?验证你的量化因子是否有效呀。回测的时候当然要全市场股票一起测了,如果只测几百只甚至几十只,不会觉得样本数据太小了吗?

统一思想之后,接下来就该上手敲代码了。本次以akshare接口为例,如果你对baostock的数据更感兴趣,调整的方式大同小异,自行调整即可。

首先我们需要在本机任意盘符下新建一个文件夹用来储存即将爬取的海量csv文件。我创建在了D盘,文件夹名字叫“Gstockdatas”。

接下来打开pycharm,新建一个python文件。

直接导入akshare包和pandas包。

接下来查阅akshare官网的说明文档,找到爬取当日全市场股票交易数据的接口,复制粘贴到pycharm中然后稍微改造一下。我们要通过这个接口间接爬取全市场股票的交易代码:

stock_zh_a_spot_em_df = ak.stock_zh_a_spot_em()
stock_zh_a_spot_em_df.to_csv("D:\\Gstockdatas\\stockNames.csv",index=False)

直接右键运行程序后,我们发现在“D:\\Gstockdatas\\”地址下,多了一个名为“stockNames.csv”的文件,打开之后是这个样子:

总共有5000多行的股票单日交易数据,其中第二列对应5000多只股票的交易代码(注意:如果出现3位或4位代码,因为前面省略了若干0,我们需要通过代码将它补齐),接下来需要用到pandas把csv文件的第二列加载进内存中,代码如下:

pd_read_csv = pd.read_csv("D:\\Gstockdatas\\stockNames.csv")
stockNames=pd_read_csv["代码"]

有了全市场股票的交易代码,我们就可以利用循环不停爬取股票数据了,具体代码如下:

today = datetime.date.today()
today = today.strftime("%Y%m%d")
i = 0
millisecondsStart = int(round(time.time()))
while i <= len(stockNames) - 1:
   milliseconds1 = int(round(time.time() * 1000))
   code = '{:0>6d}'.format(stockNames[i])
   stock_zh_a_hist_df = ak.stock_zh_a_hist(symbol=code, period="daily", start_date="19910101", end_date=today,
                                           adjust="hfq")
   stock_zh_a_hist_df.to_csv("D:\\Gstockdatas\\%s.csv" % code, index=False)
   milliseconds2 = int(round(time.time() * 1000))
   print("完成%s的数据下载! 耗时:%d毫秒  目前还剩:%d个未完成" % (
       code, (milliseconds2 - milliseconds1), (len(stockNames) - (i + 1))))
   i += 1
millisecondsEnd = int(round(time.time()))
print("全部完成!共耗时:%d秒" % (millisecondsEnd - millisecondsStart))

运行完毕后,结果如下:

随机打开一个爬好的csv文件效果是这样的:

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
若有侵权,请联系删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值