发布日期:2022-05-16浏览次数:2259
发布日期:2022-04-21浏览次数:1958
发布日期:2022-04-21浏览次数:1918
发布日期:2022-04-21浏览次数:1850
发布日期:2022-11-22浏览次数:1003
发布日期:2022-05-13浏览次数:818
发布日期:2022-05-13浏览次数:804
发布日期:2022-12-06浏览次数:783
发布日期:2022-04-21浏览次数:758
发布日期:2022-12-01浏览次数:721
昨天文章有朋友留言让分享下上交所警示函下载的工具,
虽然写这个代码不难,但还是可以和大家分享下思路。
任务拆解
当我们想做一个工具的时候,首先需要梳理出「逻辑」。
也就是先手工操作一遍,把一个大任务拆分成可执行的小任务。
大目标
比如,我们的目标是登录上交所网站,输入“警示函”关键字,点击查询,
点击一个列表页,将显示的PDF下载下来,然后复制其中的文字到我们保存的文件中。
这个流程有好几步,很多人刚开始学习的时候不太意识到这是一个大目标,
你直接对别人说:“哎,把最近几年上交所警示函内容帮我整理出来。”
别人是茫然的,不知道怎么做。
同样的,你自己也不知道,你可能只能在浏览器上搜索:“批量下载上交所警示函”
如果运气好,别人做过,可能会有现成的轮子,否则,你就又卡住了。
要知道,对于一个大目标我们是很难实际落地执行的。
小任务
那么,要想实现我们的大目标,最好的方法就是任务拆解。
获取网页信息(包括PDF下载链接)
下载PDF文件
解析PDF文件
保存数据
当我们能把任务进行拆解后,难度就自然极度下降了,
我们现在只需要针对这4个问题写函数完成。
我们以最简单的解析PDF文件为例,
啊?为什么这个是最简单的?因为之前python提取关键审计事项文章中学过,用pdfplumber库解析PDF。
你看4个问题,我们就解决了一个。简单吧?
周而复始
需要注意的是,上交所给的PDF绝大部分是文本的,一小部分的是扫描图片的。
这个代码只能解析文本的PDF,如果你想完全解决,那么我们又可以任务拆解的方法,
将3.解析PDF问题分解为:
3.1解析文字类PDF
3.2解析扫描类PDF
啊?扫描类的PDF文件我又怎么解析呢?
要么你在浏览器上搜索下有没有这个解决办法。
要么我们再进一步拆解,我们可以把扫描的PDF保存为一张张图片,再用OCR去识别图片:
3.2.1PDF拆分成图片
3.2.2OCR识别图片为文字
每一个如果不会,就去搜索解决,搜索没有直接答案的,就看能不能拆成更小的任务,
循环往复,直到找到解决问题的方法。
搜索问题及笔记记录
通过上面的步骤,我们能把一个复杂任务转换为简单任务。
这也是数学中的化归思想。
这些简单任务,有些我们可能已经会了,有些可能不会。
对于不会的,我们就需要去检索了,也就是问「度娘。」
这个真就是熟能生巧了,查得多了,就有技巧了,基本小的问题你都能解决。
当你查到后,一定要把有价值的问题,记录到你的笔记中,
你看上次我们在“python提取关键审计事项”的文章中用到的pdfplumber
今天又用上了。
查一次你可能会忘记,当你记录下来,下次遇到你就节约了检索的时间,
多遇到几次,你就彻底掌握了,这个就是知识习得的过程。
完整代码
其实代码并不重要,有需要的可以自己拿来练习、练习。
由于解析的PDF文字很多,直接输出成Excel会串行,所以我是在第4步保存数据的时候,
把数据保存在数据库中,然后把数据库的表导出成Excel。
为了让读者能执行代码,我把上传数据库的代码注释了,但是解析的content你就看不到。
如果你会mysql数据库,可以把取消注释代码。
如果你想查询其它的关键词,下载PDF,可以修改这行代码的关键词:
infos=get_download_urls('警示函')
文件信息及PDF下载
我把下载好的信息和PDF也打包分享大家,有需要的可以直接下载:
https://pan.baidu.com/s/1tTErvLvPgo0R30WTP9nUvA?pwd=k3sr
来源:审计之家