爬取国家统计局城乡数据
项目需求,,国家省市区名称代码,网上找了一圈2020年的都不是免费的,后来就自己做了个爬虫,因为自己本身做的时JAVA 开发,平常也没学过python,所以只能使用Java做一个爬虫,爬国家统计局的2020年城乡统计,爬到了村居委会一级共67w条数据
day02: https://blog.csdn.net/weixin_43638187/article/details/110220928
源码及2020年数据 : https://github.com/zhouqiang0821/smallTools
数据是在:<static/sql/base_region.sql>
1 准备工作
1.1 使用的jar包:
发送http请求使用的okhttps;
解析数据用的jsoup;
数据库操作使用的mybatis(数据量比较大,可以使用批插入);
commons-lang3 使用了一些其他工具类,如StringUtils,ObjectUtils等;
<dependency>
<groupId>com.ejlchina</groupId>
<artifactId>okhttps</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>
1.2 思路
因为自己是穷屌丝,本身准备找几个代理Ip的网站注册几个,白嫖点Ip,把数据爬一下,注册了个账号,有人给我打电话说先给我个套餐试一下,后来发现我没有业务,直接把我账号给删了…
没办法只能想别的办法了,我有个自己的云服务器,下下策让程序爬一会儿歇一会儿,后来就是爬完一个市的数据歇30s( TimeUnit.SECONDS.sleep()),爬完一个县的数据歇15s,程序一下没挂,干了一天一夜多吧,把数据给全部爬了下来.
硬是用时间怼出条路来,接下来就是代码和数据了.代码有点渣,看看就好,爬下来的数据在最后边
1.3 准备数据库表
数据库样式
DDL语句
CREATE TABLE `base_region_detail` (
`region_code` varchar(255) NOT NULL COMMENT '区域代码',
`region_name` varchar(255) DEFAULT NULL COMMENT '区域名称',
`pid` varchar(255) DEFAULT NULL COMMENT '父级区域代码',
`type` varchar(255) DEFAULT NULL COMMENT '0 省级/1 市级/2 区、县/3 乡镇、街道办/其他 村、社区111 主城区、112 城乡结合区、121 镇中心区、122 镇乡结合区、123 特殊区域、210 乡中心区、220 村庄',
PRIMARY KEY (`region_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1.4 准备model类
package com.zq.smallTool.model;
import lombok.Data;
/**
* @program: admin
* @description: 区划代码和城乡划分代码
* @author: zhouQ
* @create: 2020-11-19 09:18
**/
@Data
public class BaseRegionDetailModel {
/***
* 区域代码
*/