旧版本|银保监本级、分局本级、机关行政处罚信息数据(截止 2023 年 2 月 13 日)

今天给大家分享一份爬取自中国银行保险监督管理委员会网站的 银保监本级、分局本级、机关行政处罚信息数据。

包含三种类型的行政处罚:银保监会机关、银保监局本级、银保监分局本级。

该数据的爬取处理分为三步。第一步是获取所有处罚信息的链接,例如银保监会机关的:

该步骤会遇到反爬的问题,由于要爬取的页面不多,爬慢点就可以避免被封 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.3
gen year2 = year + 0.3

tw 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 日)

评论