文章目录

  • 2021全国省市区街道社区五级SQL文件以及爬取代码
    • 数据来源
    • 数据说明
    • SQL文档
    • 代码说明
      • 获取网页数据
      • 获取省份信息
      • 获取城市信息
      • 获取区县信息
      • 获取街道、镇信息
      • 获取社区,村庄信息
      • 完整代码地址

2021全国省市区街道社区五级SQL文件以及爬取代码

最近项目当中要用到全国区域信息,需要包含到社区,在网上找了很久,大部分是没有到社区的,或者有的是2019年的数据。
考虑到数据的准确性,所以自己写了个爬取代码进行爬取。

数据来源

数据来源:国家统计局

爬取时间:2021/05/09。国家统计局最新的数据是2020/06月更新的。

数据说明

第一点:区域信息
是指的统计局划分的统计区域,基本是按照行政区域来进行划分了,所以会存在某些区域信息不存在的情况,(整体区域信息是完整的)
例如: 成都高新区,天府新区等等,大致的说法是高新区,天府新区是属于功能区不是行政区,高新区下面的街道/社区,从行政上来说还是属于武侯区,双流区等。部分APP上面是把高新区独立出来的,例如京东,在京东上可以发现成都桂溪街道属于高新区,但是在美团APP或者淘宝上,桂溪街道属于武侯区。

第二点:特殊地级市,省直辖县

特殊地级市:
1.绝大多数地级市的的党政机关主要领导干部的行政级别为厅局级正职,但有些地级市的行政架构为副省级建制,其党政机关主要领导干部行政级别为省部级副职,被称为“副省级城市”,共15个,分别为广州市、武汉市、哈尔滨市、沈阳市、成都市、南京市、西安市、长春市、济南市、杭州市、大连市、青岛市、深圳市、厦门市、宁波市。 [5]
2.绝大多数地级市设多个市辖区,并辖县级市、县、自治县等县级行政区,但有些地级市只设市辖区,不辖县级市、县、自治县等县级行政区,它们属于“全区市”,共13个,分别为乌海市、鄂州市、克拉玛依市、深圳市、厦门市、武汉市、珠海市、佛山市、南京市、广州市、海口市、三亚市、三沙市。而有些地级市虽辖县级市、县、自治县等县级行政区,但只设一个市辖区,它们属于“单区市”,共60个。还有些地级市既不设市辖区,也不辖县级市、县、自治县等县级行政区,直接管辖街道、镇、乡等乡级行政区,属于“不设区的市”,俗称“直筒子市”,共4个,分别为东莞市、中山市、嘉峪关市、儋州市。 [5]
省直辖县:
通常情况下县由归地级市管理,不过也存在很多县是省直接管理的。

SQL文档

文档地址:https://gitee.com/hjljy/crawler/tree/master/crawler/sql

代码说明

爬虫工具:jsoup

        <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.11.3</version></dependency>

获取网页数据

第一种方式:

                //避免生僻字乱码Connection connect = HttpConnection.connect(sourceHtml);connect.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.51");connect.cookie("_trs_uv", "ko2mem1r_6_2wb2");connect.cookie("SF_cookie_1", "37059734");connect.followRedirects(false);BufferedInputStream inputStream = connect.execute().bodyStream();//获取到网页数据,采用GBK编码的方式,避免乱码存在Document document = Jsoup.parse(inputStream, "GBK", sourceHtml);

第二种方式:网页采用什么编码,这里就用什么编码,容易存在乱码

             Document document = Jsoup.connect(sourceHtml).header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.51").cookie("_trs_uv", "ko2mem1r_6_2wb2").followRedirects(false).get();

如何查看网页的编码格式

获取省份信息

    public void getProvinceInfo(String sourceHtml, boolean next) throws IOException {Document document = this.getDocument2(null, sourceHtml, 5);int sort = 1;//省份信息Elements provincetr = document.getElementsByClass("provincetr");for (Element element : provincetr) {Elements aElements = element.getElementsByTag("a");for (Element aElement : aElements) {//省份名称String provinceName = aElement.text();String href = aElement.attr("href");//省份行政区划代码 2位String provinceCode = href.split("\\.")[0];//省份行政区划代码 12位String provinceRCode = provinceCode + "0000000000";if (next) {String absUrl = aElement.absUrl("href");//获取城市信息getCityInfo(provinceCode, provinceRCode, absUrl, next);}System.out.println(provinceName);sort++;}}}

获取城市信息

    /*** 获取省份下面的城市数据** @param provinceCode  省份行政区划代码 2位* @param provinceRCode 省份行政区划代码 12位* @param sourceHtml    爬取网页* @param next          是否获取下级* @throws IOException*/public void getCityInfo(String provinceCode, String provinceRCode, String sourceHtml, boolean next) throws IOException {Document document = this.getDocument2(null, sourceHtml, 5);int sort = 1;//城市信息if (null == document) {document = this.getDocument3(null, sourceHtml, 5);}Elements citytr = document.getElementsByClass("citytr");if (citytr.size() == 0) {document = this.getDocument3(null, sourceHtml, 5);}citytr = document.getElementsByClass("citytr");if (citytr.size() == 0) {log.error(sourceHtml + "未获取到城市信息");}for (Element element : citytr) {Elements tds = element.getElementsByTag("td");Element aElement = tds.get(0);Element aElement2 = tds.get(1);//城市12位区划代码String cityRCode = aElement.text();//城市名称String cityName = aElement2.text();//城市4位区划代码String cityCode = "";Element a = aElement.getElementsByTag("a").first();if (a != null) {String href = a.attr("href");//城市4位区划代码cityCode = href.split("\\.")[0].split("/")[1];if (next) {String absUrl = a.absUrl("href");//获取区县数据getCountyInfo(provinceCode, cityCode, cityRCode, absUrl, next);}}System.out.println(cityName);sort++;}}

获取区县信息

    /*** 获取城市下面的区、县数据** @param provinceCode 省份行政区划代码 2位* @param cityCode     城市行政区划代码 4位* @param cityRCode    城市行政区划代码 12位* @param sourceHtml   爬取网页* @param next         是否获取下级* @throws IOException*/public void getCountyInfo(String provinceCode, String cityCode, String cityRCode, String sourceHtml, boolean next) throws IOException {Document document = this.getDocument2(null, sourceHtml, 5);if (null == document) {document = this.getDocument3(null, sourceHtml, 5);}//城市信息Elements countytr = document.getElementsByClass("countytr");if (countytr.size() == 0) {document = this.getDocument3(null, sourceHtml, 5);}countytr = document.getElementsByClass("countytr");if (countytr.size() == 0) {log.error(sourceHtml + "未获取到区、县信息");}int sort = 1;for (Element element : countytr) {Elements tds = element.getElementsByTag("td");Element aElement = tds.get(0);Element aElement2 = tds.get(1);//区/县12位区划代码String countyRCode = aElement.text();//区/县名称String countyName = aElement2.text();//区/县6位区划代码String countyCode = "";Element a = aElement.getElementsByTag("a").first();if (a != null) {String href = a.attr("href");//区/县6位区划代码countyCode = href.split("\\.")[0].split("/")[1];if (next) {String absUrl = a.absUrl("href");getStreetInfo(provinceCode, cityCode, countyCode, countyRCode, absUrl, next);}}System.out.println(countyName);sort++;}}

获取街道、镇信息

   /*** 获取街道信息** @param provinceCode 省份CODE* @param cityCode     城市code* @param countyCode   区县code* @param countyRCode  区县完整code* @param sourceHtml   街道信息html地址* @param next         是否获取下级区划* @throws IOException 异常*/public void getStreetInfo(String provinceCode, String cityCode, String countyCode, String countyRCode, String sourceHtml, boolean next) throws IOException {Document document = this.getDocument2(null, sourceHtml, 5);if (null == document) {document = this.getDocument3(null, sourceHtml, 5);}int sort = 1;//城市信息Elements towntr = document.getElementsByClass("towntr");if (towntr.size() == 0) {document = this.getDocument3(null, sourceHtml, 5);}towntr = document.getElementsByClass("towntr");if (towntr.size() == 0) {log.error(sourceHtml + "未获取到街道信息");}for (Element element : towntr) {Elements tds = element.getElementsByTag("td");Element aElement = tds.get(0);Element aElement2 = tds.get(1);//街道/镇12位区划代码String streetRCode = aElement.text();//街道/镇名称String streetName = aElement2.text();//街道/镇8位区划代码String streetCode = "";Element a = aElement.getElementsByTag("a").first();if (a != null) {String href = a.attr("href");//街道/镇8位区划代码streetCode = href.split("\\.")[0].split("/")[1];if (next) {String absUrl = a.absUrl("href");getCommitteeInfo(provinceCode, cityCode, countyCode, streetCode, streetRCode, absUrl, next);}}System.out.println(streetName);sort++;}}

获取社区,村庄信息

    /*** 获取社区、乡村信息** @param provinceCode 省份CODE* @param cityCode     城市code* @param countyCode   区县code* @param sourceHtml   街道信息html地址* @param streetCode   街道code* @param streetRCode  街道完整code* @throws IOException*/public void getCommitteeInfo(String provinceCode, String cityCode, String countyCode, String streetCode, String streetRCode, String sourceHtml, boolean next) throws IOException {Document document = this.getDocument2(null, sourceHtml, 5);if (null == document) {document = this.getDocument3(null, sourceHtml, 5);}//城市信息Elements villagetr = document.getElementsByClass("villagetr");if (villagetr.size() == 0) {document = this.getDocument3(null, sourceHtml, 5);}villagetr = document.getElementsByClass("villagetr");if (villagetr.size() == 0) {log.error(sourceHtml + "未获取到社区信息");}int sort = 1;for (Element element : villagetr) {Elements tds = element.getElementsByTag("td");Element aElement = tds.get(0);Element aElement2 = tds.get(1);Element aElement3 = tds.get(2);//社区/乡12位区划代码String committeeRCode = aElement.text();//城乡分类代码String type = aElement2.text();//社区/乡名称String committeeName = aElement3.text();System.out.println(committeeName);sort++;}}

完整代码地址

https://gitee.com/hjljy/crawler/tree/master/crawler

2021全国省市区街道社区五级SQL文件以及JAVA爬取代码相关推荐

  1. 2020最新全国省市区街道居委会五级地址

    (1)2020最新全国省市区街道居委五级区划代码数据库(来自国家统计局2020年6月20日爬取数据)绝对真实完整 (2)2020-9-19日青风百草修定版 (3)如果您发现了地址库存在的问题,也请加以 ...

  2. 2021年省市区街道居委五级联动

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.逐级拉取 二.调用数据同步接口 1.直接调用循环调取 2.对应表结构 总结 代码地址 前言 提示:这里可以添加本文 ...

  3. java整合Mybatis-plus获取省市区街道社区信息进行存储

    java整合Mybatis-plus爬取国家统计局省市区街道社区信息进行存储 国家统计局:http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/ 通过链接进 ...

  4. 小玩意.包含全国省市区街道邮编的数据库

    这个数据库是我2009年春季整理的比较全.有180W+的街道邮编信息. 可作为商城的辅助工具,如输入邮编自动填写收货人街道信息等. 数据截图: 下载地址(三个压缩包) 1./Files/rohan/全 ...

  5. python抓取国家统计局省市区街道社区数据

    一.说明 在网上百度下载省市区等数据,不是要积分下载就是要钱,我等穷逼既无积分又无钱,那就只有另想办法,学过几天python,用python将就抓点数据,借鉴别人一些写法,再修修补补,调试bug,基本 ...

  6. 全国省市区街道最新数据获取

    一.效果 二.相关代码 1.引入包 pom: <?xml version="1.0" encoding="UTF-8"?><project x ...

  7. 2019年最新全国省市区街道数据(统计局MySQL数据库)

    本文转载于:君哥聊编程 对应sql文件 https://pan.baidu.com/s/1fDeEp5C-WGx-6Z1xPDjwGg 提取码:9ki4 省份表: 城市表: 地区表 街道表

  8. 2021全国省市区行政区划数据接口

    api是高德地图官方的,其中台湾省,市区行政区划数据没有提供,文末有我从别处整理了json数据. public function setAddressFather(){$province = [];$ ...

  9. 2021全国高校计算机能力挑战赛(决赛)Java

    计算奖品价格标准差 import java.util.*;public class Main {public static void main(String[] args) {Scanner in = ...

  10. 2021全国高校计算机能力挑战赛(初赛)Java试题四

    某游戏公司设计了一个奖励活动,给N个用户(1<=N<=10^7)连续编号为1到N,依据用户的编号S发放奖励. import java.util.ArrayList; import java ...

最新文章

  1. c++调用python的代码、函数、类
  2. Coding:实现memcpy函数
  3. 优化传输文件的性能- -零拷贝
  4. 深入理解计算机系统 视频教程,深入理解计算机系统1
  5. mysql 字段类似字段值6_MySQL面试题
  6. 动态规划之图像压缩问题
  7. signature=fa342ee2b7c3e3e9cba3f194df2d59ca,Date of Signature
  8. STM32:UART中的硬件流控RTS与CTS
  9. hadoop发行版本之间的区别
  10. [转]Go语言(golang)开源项目大全
  11. hpm1216nfh驱动程序_惠普m1216nfh打印机驱动
  12. PHP+jQuery年会在线拍照抽奖
  13. LG 的数学计划 ---- 第三步 欧几里得算法和扩展欧几里得
  14. 基于MFC的网络浏览器Demo
  15. Could not transfer artifact XXX 问题处理
  16. C++Web服务器(一):服务器整体运行流程
  17. Python数据分析之Pandas库
  18. 销 售 具 备 10 条
  19. OATS PK Pairwise Testing
  20. 2023 网站防红防举报源码

热门文章

  1. 16.4 weak_ptr简介、weak_ptr常用操作与尺寸问题
  2. Git子模块使用-管理多个git项目
  3. J2SDK1.5-J2SDK5.0,哈哈
  4. 使用yum下载rpm源码包
  5. 雅诗兰黛公司宣布品牌集群领导层更新
  6. 第三集 be 动词一般动词的过去式
  7. 互联网创业的准备——依赖服务:云主机、域名、代码库
  8. webRTC中语音降噪模块ANS细节详解(三)
  9. 让创意设计更加简单:在线设计平台Canva登陆中国
  10. 移动机器人c语言程序设计,机器人辅助C程序设计