Python免费获取股票业绩预告【附源码】

在众多的股票量化策略里,我比较钟爱一个策略:净利润断层

直观理解就是在股票的业绩预告、业绩快报、业绩报告等报告出来的时候,因为业绩超预期,股价会有一个跳空高开形成缺口,而且因为上攻力量比较强,这个缺口短期不会回补

而且股价会随着上攻力量越来越高,形成一个净利润断层

关于这个策略的验证今天不多说,改天会专门讲,我个人觉得断层上攻的准确率很高

但是由于业绩预告、业绩快报、业绩报告这些数据一般都需要付费,很少有免费接口

所以,今天就来教一下大家如何用Python免费获取股票的业绩预告数据

ok,先给一个使用说明,源码和逻辑见后文

1、核心代码

首先是需要自定义一些参数,分别是:

业绩预告的年份、季度,以及需要获取的报告日期,格式是年-月-日

# 需要手动设置,对应的 report_quarter 即为每个季度的数据
report_year, report_quarter = '2022', '4'
# 截止当前日期
notice_day = '2022-10-29'

其次是通过一个函数循环获取获取每一个页面中的所有报告

为了更方便跳出循环,一旦报告日期小于设定的日期,会结束爬取,这个在后面的代码中会介绍到

# 爬取数据
df_stock_info = get_main_info(report_year, report_quarter, notice_day)

最后是将爬取的业绩预报数据存到本地文件中:

# 导出成本地csv
df_stock_info.to_csv(save_filepath, index=False, encoding='gbk')
print('======>> 处理完成,已导出本地:{0}'.format(save_filepath))

程序运行图如下:

4407bcb1b23868dcf48c28a01acc29de.png

最终爬取的报告结果如下:

eec5925acaa0b77d1023ba13502fee86.png

10月27号共有5条公布业绩预告的股票

2、爬虫思路

获取源码文件请直接在原文链接中回复 业绩预报

原文链接👉:Python批量免费获取股票业绩预告

后续会有一些股票的量化策略分享,而数据正是来自于今天的这篇文章,所以今天的源代码和数据肯定是不会一直公开的,目前仅针对公众号粉丝开放,先到先得吧,后面大概率会收费。

这里我是从新浪财经上爬取的,选择它是因为它有很多有意思的数据,可以用来做辅助验证量化策略,所以后续的很多数据大概率也会是从这拿了

先打开新浪财经的页面,切到业绩预告这一栏

3b37ef1f1d992466f05c859f5f1c0bdf.png

可以看到,上面有我们需要的股票名称、业绩类型、公告日期、报告日期、业绩增幅等数据

浏览器打开 F12,定位到对应的源码上

e82ba9609427478eebc99e5251e5d89d.png

数据一览无遗,正是我们需要的

最后在切换页面的时候,可以看到网址栏的URL发生了变化,观察它的规律,我们可以根据自己的需求构造想要访问的页面

最后,在点击右上角条件筛选的时候可以发现,URL同样发生了变化,对应的我们可以将参数放在URL里面一起构造

5e387cfb46362788964b2e768a65caba.png

对应的参数如下:

  • reportdate:报告年份

  • quarter:报告季度,分为1/2/3/4

  • p:页面下标,默认从1开始

  • num:显示每页的数据个数,默认是40

  • order:排序方式,默认是公告日期排序,可以选择类型排序,参数是type|2;排序默认是降序,如果想升序就把 2 改成 1

最后循环遍历构造的每个页面,并把页面数据爬取下来就可以了。

获取目标日期的业绩预报的核心代码如下:

if not continue_flag:
    break
print('[ 提示 ]: 正在爬取第{0}页数据...'.format(page_index))
page_url = 'http://vip.stock.finance.sina.com.cn/q/go.php/vFinanceAnalyze/kind/performance/index.phtml?s_i=&s_a=&s_c=&reportdate={0}&quarter={1}&p={2}'.format(report_year, report_quarter, page_index)
# 爬取当前页码的数据
response = requests.get(url=page_url, headers={'User-Agent': get_ua()})
report_page, continue_flag = parse_content(response, notice_day)
report_data.extend(report_page)

然后是详细的解析每一页内容,因为前面是设置了无限循环,所以这一步需要判断一下

当当前页面的公告日期小于目标日期,就会停止,核心代码如下:

# 如果当前日期小于所需的报告日期,则退出
if report_per[4] < notice_day:
    continue_flag = False
    break
elif report_per[4] == notice_day:
    report_page.append(report_per)

以上是核心源码,这里省去了非核心部分,需要请查看源码文件。

 获取源码文件请直接在原文链接中回复 业绩预报

原文链接👉:Python批量免费获取股票业绩预告

后续会有一些股票的量化策略分享,而数据正是来自于今天的这篇文章,所以今天的源代码肯定是不会一直公开的,目前仅针对公众号粉丝开放,先到先得吧,后面大概率就不开放了。

原创不易,希望大家在看完文章的同时,记得一键三连

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值