从巨潮资讯爬取上市公司公告
本文最后更新于 2022年10月16日 晚上
背景
最近闲着没什么事,就帮同学写了个爬取巨潮资讯上市公司公告的 python 脚本,根据公司的股票代码以及公告的日期自动下载公告( pdf 或者 html 格式)。
脚本开源在 cninfo-crawler。
刚开始本来想用 selenium 爬的,结果搞到一半发现完全没有反爬,就直接用 requests 库了。
爬取过程
我们先进入巨潮资讯主页,打开 F12 开发人员工具,再随便搜索一个公司的股票代码跟公告日期。
点击查询,然后关注右边开发者工具捕捉到的消息,将它们按照 Type
排序,我们要找的应该在 xhr
里面,而且方法应该是 POST
。
一眼我们就发现 query
特别可疑,点开它看看。
先看标头 POST
再看载荷
这个应该就是我们搜索的时候填的表单,stock
里面的 300409
就是股票代码, 但是那个 9900023868
是啥,不太懂。 seDate
就是我们查询的时间段。其他参数不用改。
获取下载链接
看一下预览,很明显 adjunctUrl
就是下载链接了,可惜这是个相对链接,
我们先点进去看一看,刚开始我尝试从 公告下载 捕获下载链接,但是事实证明完全没有用,后来发现可以点 全屏
我们点进全屏,立马就发现 chrome 已经帮我们获取到了完整链接。
因此,完整链接就是 http://static.cninfo.com.cn/
跟 adjunctUrl
拼接一下。
值得注意的是,并不是所有的文件都是 pdf,也有 html 所以如果要将下载下来的文件重命名的话,要处理下扩展名。
获取 orgId
这一部分我们说明一下那个神奇的数字 9900023868
怎么来的,因为单用 post 请求不带它的话根本不行,而这个数字每个股票代码不一样。
注意到 这里有一个 json 文件,我们点进去预览一下,发现有个 orgId
,它就是了。
保险起见,我们找一下道氏技术的信息(或者搜索一个其他股票对一下)
没错,就是这样了。
因此,所有信息我们都有了。核心的下载代码如下
1 |
|
其他的工作就是解析返回的json 与下载链接。本文就不再叙述了。
结语
巨潮资讯还是好爬的,完全没有做任何反爬。