今天给大家分享一份爬取自中国银行保险监督管理委员会网站的 银保监本级、分局本级、机关行政处罚信息数据。
包含三种类型的行政处罚:银保监会机关、银保监局本级、银保监分局本级。
该数据的爬取处理分为三步。第一步是获取所有处罚信息的链接,例如银保监会机关的:
该步骤会遇到反爬的问题,由于要爬取的页面不多,爬慢点就可以避免被封 IP 了。
爬取之后可以得到 银保监本级、分局本级、机关行政处罚信息详情链接(截止2023年2月13日).xlsx 数据,另外我还提供了供 Stata 读取的 dta 文件:
这些行政处罚信息包含多种形式的,大体上是处罚决定书和处罚信息公开表,由于处罚决定书的内容比较混乱,难以整理成表格数据,所以就没有再整理,处罚信息公开表的内容大体是下面这样的(其实也有很多形式,整理起来巨头疼):
经过一番艰难的整理,一共得到了 3.85 万条处罚信息公开表数据:
其中各年的数据量如下:
包含如下变量:
年份、处罚决定书文号、主要违法违规事实或案由、处罚依据、处罚决定、作出处罚决定的机关名称、作出处罚决定的日期、个人姓名、单位名称、法定代表人或主要负责人姓名、文档ID、类别、发布时间、文档文件链接、pdf文件链接、标题
上图的绘制代码为:
use "银保监本级、分局本级、机关行政处罚信息公开表(截止2023年2月13日)" , clear contract 年份 类别drop if missing (年份)egen type = msub(类别), find(银保监会机关 银保监分局本级 银保监局本级) replace (a b c)drop 类别spread type _freq replace a = 0 if missing (a)ren (a b c) (银保监会机关 银保监分局本级 银保监局本级)gen total = 银保监会机关 + 银保监分局本级 + 银保监局本级gen year = 年份gen year1 = year - 0.3gen year2 = year + 0.3tw bar 银保监会机关 year1, barwidth(0.3) || bar 银保监局本级 year, barwidth(0.3) || bar 银保监分局本级 year2, barwidth(0.3) || conn total year, yaxis(2) m (o) lp(solid) leg(pos(6) row(1) order (1 "银保监会机关" 2 "银保监局本级" 3 "银保监分局本级" 4 "总数量" )) xti("" ) yti("行政处罚信息公开表数量(分类别)" , axis(1)) yti("行政处罚信息公开表数量(总共)" , axis(2)) xla(2003(2)2023) yla(0(1000)5000) yla(0(1000)8000, axis(2)) ti("银保监本级、分局本级、机关行政处罚信息公开表数量" ) subti("爬取 & 整理:微信公众号 RStata" ) caption("数据来源:中国银行保险监督管理委员会" ) gr export "银保监本级、分局本级、机关行政处罚信息公开表数量.png" , replace width(2400)
点击这里跳转到 RStata 短书平台获取附件:旧版本|银保监本级、分局本级、机关行政处罚信息数据(截止 2023 年 2 月 13 日)
评论