中国大陆五级行政区划数据爬虫

数据源:中华人民共和国国家统计局官方网站

统计局数据特点描述

  1. 统计局每年10月31日更新一次数据。
  2. 统计局的数据分为省,市,区县、乡,街道、镇,村、居委会共五级。
  3. 省级编码为两位,其余均为12位。前六位编码规则与身份证相同,其余编码规则不明,欢迎知道的朋友补充。
  4. 村、居委会的城乡编码具体业务含义不清楚,欢迎知道的朋友补充。

系统设计特点

  1. 完全按照统计局的数据编码规则,不做任何转换。

  2. 按照统计局页面命名,分别将数据编码为:

    级别省(区、直辖市)区县、乡街道、镇村、居委会
    编码PROVINCECITYCOUNTYTOWNVILLAGE
  3. 提供json(children标识主子结构)和flatten(code,pCode标识主子关系)两种输出结构。

  4. 静态方法直接调用。

    // 获取json格式的数据,2021年的,到街道级别
    AreaReptileUtil.doCrawlJson("2021", AreaLevel.TOWN);
    // 获取flatten格式的数据,2021年的,到街道级别
    AreaReptileUtil.doCrawlFlat("2021", AreaLevel.TOWN);
  5. 轻量级,依赖仅有hutool(用于发http请求)和jsoup(用于解析html)。

  6. 提供debug模式(仅解析北京、天津、河北三省的详细数据)用于调试。 注意,该配置全局有效,默认为关闭状态

    AreaReptileUtil.setDebugMode(true);
    List<AreaNode> areaNode = AreaReptileUtil.doCrawlJson("2009", AreaLevel.COUNTY);
    
  7. 有下级数据的,会附带下级数据的对应页面。

  8. 输出结果为utf-8编码

注意

  1. 统计局网站有防ddos攻击,所以没有采用并发http请求方式,抓取效率一般。(基础数据一年更新一次,慢点应该也可以忍,关键是快了人家就把咱封了)

  2. http请求失败会重试3次,抓取过程只能全部完成才算完成,中间有错误只能从头开始。

  3. 抓取级别调细之后,需要很长时间抓取,且需要占用大量内存,请按需抓取。

  4. 本程序没有考虑多线程并发调用过程中的线程安全问题。(基础数据一年更新一次,没必要并发触发吧)

  5. 样例数据位于项目的data-examples目录,目前提供如下的几个结果:

    • 2021年,json形式,区县级别的txt格式数据

    • 2021年,flatten形式,街道级别的csv格式数据

    • 2009年,json形式,区县级别的txt格式数据

      欢迎大家继续提供样例数据。互帮互助,节省宝贵时间。

许可证

hutool和本程序采用木兰公共许可证, 第2版

jsoup采用MIT许可证

对商业项目友好。

其他

数据不涉密,都是统计局网站上的公开数据。程序只是负责整理了一下。

项目地址:https://github.com/zhiguangliu/area-reptile-from-stats-gov-cn

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值