两小时搞定1200个法律文件的自动化挑战

in #cn14 days ago

前几天,我一直在琢磨怎么高效获取国家规章库的法律法规。虽然我已经写了一个自动化RPA程序,但总是在第二或第三个循环时遇到问题,程序无法定位到页面上的某些链接,导致操作被迫中断,有些时候,定位的链接又是错误的。比如有些文件重复下载,有些文件被跳过去。我心里明白,这一定是网站为了防止爬虫程序而采取的反爬措施。可惜以我目前的水平,暂时还没办法绕过这个难关。

于是我开始考虑换个思路。我决定先获取所有法律法规的名字和对应的链接,这样后续的操作就方便多了。但是用现有的自动化程序来完成这个任务几乎是不可能的,于是我想到用Python的爬虫程序来试一试。我以前用过的selenium库正好适合做这种工作,虽然它不是最快的方式,但胜在稳定。

接下来我写了一个爬虫程序,可是第一个问题就来了:程序没办法自动定位到国家规章库左边栏里某些部委的链接。举个例子,我需要下载“应急管理部”的法规,那么就得先点击页面左边的“应急管理部”按钮,页面右边才会出现对应的条例名字和链接。接着我再逐页翻页获取所有的内容。可惜的是,这个网站太聪明了,我无法自动定位连接,而且它用了一种反爬虫方式,无论在哪个页面,地址栏的URL始终保持不变(https://www.gov.cn/zhengce/xxgk/gjgzk/index.htm?searchWord=), 我甚至连背后的原理都还没搞清楚。

所以我让程序实现了一种半自动化的操作。程序运行到中途会暂停一下,等待我手动点击对应的部委名字,等页面加载出相关的法律法规链接后,程序再继续自动获取链接并翻页操作。虽然不是全自动,但半自动化的方案还是大大提升了效率,比我全手动操作至少快了100倍

通过这个简单的程序,我成功获取了所有部委的法律法规名字和链接,并且将它们写入了Excel表格。接下来就是第二步,我用影刀自动化程序打开这些链接。程序会读取Excel中的链接地址,直接在浏览器里打开,然后执行一系列操作:全选网页内容,复制并保存,再用Python的文本处理函数和Word处理模块将这些文本内容转换成Word文档。这一步没有太多技术上的困难,唯一的挑战就是处理大量的文件。我让程序一次性处理了一千多个文件,虽然整个过程耗时超过两个小时,但比起手动下载来说,效率已经高出太多。

最终,我成功下载了大约七八个部委的1200多个法律法规文件。下一步就该做些其他的了