巨潮资讯网A股上市公司年报链接爬虫(详细分析过程+成品)

您所在的位置:网站首页 巨潮资讯网APP怎么样 巨潮资讯网A股上市公司年报链接爬虫(详细分析过程+成品)

巨潮资讯网A股上市公司年报链接爬虫(详细分析过程+成品)

2024-07-16 09:14| 来源: 网络整理| 查看: 265

1.引言

笔者之前已经写过一篇关于爬取年报的文章,但代码尚不完善,这段时间也一直有读者咨询一些问题,因此专门再发一篇更加详细的帖子,欢迎大家互相交流学习。

本文更新了爬虫程序的调用接口对现有问题进行修正,主要更新如下:

✅更加全面的年报数据,突破了旧接口的2000页限制

✅内存占用更小,运行速度更快

✅封装函数,提供方便的参数修改

✅更详细的功能说明,便于二次开发

✅更完整的免费成品资源,含2022年最新年报(2003-2022年报Excel表格)

代码目前存在的问题:

若公司发布修正后的年报,代码无法去重,需手动处理

若干不影响主功能的小缺陷…

2.具体步骤2.1 网页分析

图为巨潮资讯网公告发布页面,在右侧可以选择要查询的相关参数。

包括板块分类、公告类型分类、行业分类、时间范围等。

我们选择沪深两市,公告选择年报进行查询,并按公司代码进行排列,如下图所示。

不难发现,基本已经得到了我们需要的内容,但是网站中多出了一行我们并不需要的年报摘要内容,我们在之后可以用正则表达式去除。

2.2 网络抓包

对网站内容分析完成后,就可以开始抓包。按F12打开开发者工具,切换到网络选项卡。

我们切换一下页面,发现多出了一个query请求,这就是我们需要的访问接口。

根据信息显示,这是一个POST请求,目标URL为:http://www.cninfo.com.cn/new/hisAnnouncement/query,负载的参数为查询时的相关参数,我们解析一下,结果如下图所示。

这个请求最后返回了一个json文件,包含30条公司数据,当然也包括我们需要的年报链接。

到这里基本的抓包和分析就已经完成,我们可以直接开始这部分代码的编写。

这个函数包含两个参数page_num和date,我们可以控制当前页码来遍历整个json文件,并用date来控制需要查询的时间范围。

2.3 数据获取

这部分主要就是为了实现本文的主要目的:获取指定年份的上市公司报告链接

首先我们需要循环遍历整个所有页面,那么如何确定遍历次数呢?

仔细研究返回的json文件我们发现文件最后会包含一个totalpapges的参数,即总页数。

那么,有了这个数字,我们便可以先请求一次获取总页数,从而设定好循环次数进行获取。

⚠️然而,笔者最后生成的excel表格中存在数千条重复项,对于这个问题,笔者在研究后发现该接口每次获取的页数上限最多为100页!超过这个页数后返回的内容完全一致。

从网页上看结果也是如此,最大显示范围为100页,之后便无法获取。

针对这一问题,笔者通过划分时间范围进行处理,稍后进行介绍,此处先给出循环访问获取数据函数的完整代码,代码中的重试机制此前已经介绍,本文不再赘述。

2.4 数据保存

上文我们提到,json文件的最大获取范围为100页,因此我们根据年报发布的分布特点,将每年的1月1日-4月30日作为时间范围。

然后将其细化,1-4月为一组,4月内部分为5组,保证每组获取到的总页数均小于100,并将本列表作为函数参数进行遍历,将获取到的数据汇总。

既然已经获取到了所有数据,我们不可能将所有数据直接保存为不易阅读的json那么接下来就是将得到的数据进行解析。

我们首先分析了json文件中的具体参数,选择解析如图所示的几个变量,包括股票代码,公司名称,报告名称,年报链接等内容,并将年报链接拼串补充完整。

接着创建一个excel表格,按这些变量的顺序创建表格,并存入表格,注意在存入表格时,需要对内容进行筛选,如“英文版,摘要”这类年报并不是我们所需要的。

以下是主函数的完整代码。

2.5 开始运行

到这一步基本就大功告成了!只需要设置相关参数,就可以选择下载特定年份的年报,或者用循环遍历下载指定范围的年报。

3.小结

经过测试,基本上可以获取绝大部分年报,你可以通过调整请求参数来控制具体的公司行业,或者所属板块,但代码仍然有部分小问题,如进度显示会溢出、获取到的数据需要手动去除重复项等。

⭐️笔者已将2003-2022年年报链接打包,以及2010-2021年txt年报,评论区留言,或者关注公众号“凌小添”回复年报即可免费获取。

另外,笔者目前在整理2022年的年报数据以及参考吴非所做的2010-2022年上市企业的数字化转型词频,感兴趣可以先关注哦~整理好后第一时间更新.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3