前言
因为作者是个学生,学习道德与法治是我们必不可少的一门科目。既然叫道德与法治,那么肯定要和法律打交道,特别是在作者还特别擅长这玩意的情况下。跟法律打交道,法律书籍必不可少。
本来我想着买一套便携书凑合的,结果一看价格我蒙了。
¥178!!!
这还只是不带司法解释的常用法律版。
这简直是穷人的噩梦吗!
不过,为了普及法律,网络上都提供了文件下载版本。
本期的目标就是把这些文件都爬下来。
一、数据源
百度一下,满目琳琅。
点进去一看,问题来了,这些网站都有着不统一的格式,有的干脆用格式化文本表示无格式文本,存成文档压根没法用,时效性也大打折扣。
另外百度的搜索结果其实也挺不靠谱……
所以说,我们还是使用官方数据比较好。除了数据量庞大的全国人民代表大会(常务委员会)公告一般随附法律文本之外,还有官方数据吗?
你别说,你要挖到几页之后才能找到一个:https://flk.npc.gov.cn/ 国家法律法规数据库
二、数据筛选
幸好这个网站有筛选功能,不然数据量还是十分庞大的。
在“法律”板块下有“高级检索”选项,我们可以利用这个。
注:可能由于数据录入错误,宪法修正案和部分附件也被录进去了,因此我们暂时不爬取宪法相关数据,同时做了关键词筛选。
附:高级检索的筛选条件
类型:行政法,刑法,民法商法,经济法,社会法,诉讼与非诉讼程序法
时效:有效
三、抓包
1.分页
打开F12开发者工具,按照上面的步骤进行检索。
点击“确定”按钮,出现了一个Ajax请求。
化简一下参数:GET https://flk.npc.gov.cn/api/?xlwj=02&xlwj=03&xlwj=04&xlwj=05&xlwj=06&xlwj=07&xlwj=08&page=1
数据的结构是一个很简单的JSON,类似于这样:
初步猜测xlwj就是筛选条件,page是页面。
思路:一页一页迭代,当totalSize为0时代表没有更多页数了。
2.详细页
随便乱点一条,打开F12。
抓到了一个可疑包:POST https://flk.npc.gov.cn/api/detail,参数里有个id字段,对应上面的数据。
综合分析,这应该就是目标网址。
切到数据,还是JSON格式:
看到没,大大的Word,大大的PDF摆在哪里呢。
所以就这么完事了。
杂谈:看见的与发现的
本来第一眼看到的页面,只有一个大大的“扫码下载”。
下意识的以为还要做二维码识别……其实下载地址包里都有。
这个意味着什么?
做爬虫的时候,先抓包再看!不要忽略那些暗含着数据的字段!
这类还是比较明显的,万一是别的……那不绕死你啊?
像这个,人工分析的时候我也是拿去识别二维码的。当你打开F12,你会发现根本不需要扫码,地址都给你了(也许是要前端渲染预览用的)。
三、代码逻辑
用Windows画图画的不太好看,请见谅
四、代码
总结
这是第一个正儿八经的真实页面小爬虫(之前我主要是写API链式调用),从中也发现了一些坑点,是爬虫大项目的重点知识之一。
幸好网站没有什么反扒…不然我们遇到的情况要复杂的多。(详情请看杂谈部分)总之这个小爬虫就算上手练习吧。