在涉及地址服务时,经常需要用到地址信息的获取,而行政区划可能不定期的发生变化,所以我们需要获取最新的行政区划信息。因行政区划数据量较大,Java中可以使用Jsoup进行数据的获取、处理。

大家经常用到的行政区划数据,可从中华人民共和国民政部网站上获取,响应请求链接如下所示:

界面如下图所示:

通过观察中华人民共和国县以上行政区划代码的列表中可以看出行政区划代码基本规则:

行政区划代码若为非 “00” 结尾,可将区划级别视为 三级;

行政区划代码若为 “00” 结尾,可将区划级别视为 二级;

行政区划代码若为 “0000” 结尾,可将区划级别视为 一级;

页面部分源码如下所示:

可知:行政区划代码数据存储在 table 中,表格的第二列存放“行政区划代码”,表格的第三列存放“单位名称”;

爬取思路如下:

1、获取响应结果的 dom 树;

2、获取所有的行标签;

3、便利所有的列标签,获取拥有三个以上子列的行信息,并取第 2 列和第 3 列;

4、依据行政区划代码基本规则,进行数据的标示;

5、输出获得的行政区划数据,此处输出为 SQL 插入语句。

源代码如下所示:

@Testpublic void getRegionSql () throwsException {

String url= "http://www.mca.gov.cn/article/sj/xzqh/2019/201901-06/201904301706.html";int count = 0;

Document doc=Jsoup.connect(url)

.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0 Win64 x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36")

.header("Accept", "text/html,application/xhtml+xml,application/xmlq=0.9,image/webp,image/apng,*/*q=0.8,application/signed-exchangev=b3")

.maxBodySize(0)

.timeout(100000)

.get();

Elements trs= doc.select("tr");for(Element tr : trs ) {

Elements tds= tr.select("td");if (tds.size() > 3) {

String regionCode= tds.get(1).text();

String regionArea= tds.get(2).text();

String parentCode= "";if(validCode(regionCode)) {int leveType = 2;

parentCode= regionCode.substring(0,2) + "0000";if (!regionCode.endsWith("00")) {

leveType= 3;

parentCode= regionCode.substring(0,4) + "00";

}if (regionCode.endsWith("0000")) {

leveType= 1;

parentCode= "000000";

}

count++;

String content= String.format("insert into region_code (code, name, level, parent_code, dtime, note, ctime)" +

" values (%s, '%s', %s, %s, '201903', '系统生成', NOW());" + System.getProperty("line.separator"), regionCode, regionArea, leveType, parentCode);

System.out.println(content);

}

}

}

System.out.println("总数量为:" +count);

}

java 行政区划数据库_Java学习-056-Jsoup爬虫获取中国所有的三级行政区划数据(一)...相关推荐

  1. java打印系统参数_Java学习(二十):获取系统参数

    public static void main(String[] args) { Properties props = System.getProperties(); // 系统属性 System.o ...

  2. Python:使用爬虫获取中国最好的大学排名数据(爬虫入门)

    文章目录 问题描述 结果展示 解决思路 代码实现 代码讲解 总结一下 使用 XPath 实现 问题描述 请使用 Python 爬取最好大学网的 大学排名数据 ,并保存为 CSV 和 Excel 格式. ...

  3. Java爬虫 获取中国天气网7日天气预报

    Java爬虫 获取中国天气网7日天气预报 前言 工具准备 爬取数据 获取日期和星期 获取天气描述 获取温度范围 获取风向及风力 完整代码 引用 前言 项目需要获取7日天气预报,免费好用的接口寻觅不到, ...

  4. 利用爬虫获取猫眼电影热门前100数据

    利用爬虫获取猫眼电影热门前100数据 实现方法 1:访问网站,获取页面源码 2:解析页面 ,得到想要的数据 3:循环爬取多个页面 4:把数据写入本地文件 ''' 需求:爬取猫眼电影前100的电影信息 ...

  5. java servlet 数据库_Java Servlet调用数据库复习

    首先要导入jar包. 剩下的基本就是模版式的代码了: public class main { // JDBC 驱动名及数据库 URL static final String JDBC_DRIVER = ...

  6. java 微型数据库_Java 9代码工具:使用Java微型基准测试工具的实践会话

    java 微型数据库 用肉眼看,基准测试似乎只是确定执行某些代码需要花费多长时间的简单问题. 但是,通常情况下,这是幼稚的方法. 提供具有准确和可重复结果的有意义的基准并非易事. 在本文中,我们将向您 ...

  7. java显示数据库_java查询数据库中的数据并显示

    java查询数据库中的数据并显示 关注:93  答案:2  mip版 解决时间 2021-01-17 16:29 提问者笑低了眉眼 2021-01-17 04:11 button.addSelecti ...

  8. Java使用Jsoup爬虫获取网站内容(三)获取元素内容属性的方法

    介绍 我们可以通过Jsoup来获取一个Document对象,然后通过对Document对象进行解析来获取元素对象,最后通过元素对象的一些方法来获取元素的属性名称,属性值以及文本内容. 代码 附上获取方 ...

  9. java服务监控_Java最流行的微服务框架监控和各种监控数据

    原标题:Java最流行的微服务框架监控和各种监控数据 自动化的监控运维机制 自动化的监控运维机制的运行基础是不间断地收集各个微服务应用的各项指标情况,并根据这些基础指标信息来制定监控和预警规则,更进一 ...

  10. 编写python爬虫 获取中华英才网全网工资数据

    做数据分析 数据挖掘,第一步是获取数据,在这里,我们要分析现今全国各地各个职业的工资情况. 我们选择较为权威的'中华英才网',编写python爬虫获取该网站上的各个招聘信息说给出的工资,再取其行业工资 ...

最新文章

  1. 汉芯一号、木兰语言再到天赐 OS,国产基础软件十年泣血,梦想何圆?
  2. MyBatis-Plus 通用IService的使用
  3. 图解GitHub和SourceTree入门教程
  4. 《研磨设计模式》chap22 装饰模式Decorator(3)I/O流
  5. 【Ajax Servlet JSP MySQL】Ajax实现省份地区选择:三级联动
  6. 在 CAP 中使用 AOP ( Castle.DynamicProxy )
  7. SimpleXMLRPC_python xmlrpclib SimpleXMLRPCServer 模块
  8. linux那些事之page cache
  9. oracle having(),Oracle HAVING子句
  10. 文件查找命令 - find
  11. SLAM_信息矩阵协方差矩阵
  12. 【抢头条】迄今最全的无刷电机工作及控制原理分享-绝对...!
  13. Meltdown Reading Kernel Memory from User Space
  14. dbm与mysql_DBM数据库 | 学步园
  15. chm文件无法打开,chm电子书显示“此程序无法显示网页”的解决办法
  16. 基于51单片机的简易计算器proteus仿真 数码管显示
  17. C# 编写的 64位操作系统 - MOOS
  18. ESP8266 WIFI模块调试及在QT Windows下的通讯
  19. oracle 11g open_cursors 修改,修改open_cursors和session_cached_cursors的参数值
  20. 2022夏PAT甲级题解 by小柳2022.6.7

热门文章

  1. bootstrap个人简历毕业作品模板
  2. a20 linux qt,全志A83T开发板,超树莓派/A20/A31S/banana pi M3/八核/Android5
  3. 约瑟夫问题python列表_Python实现约瑟夫问题
  4. JavaScript正则表达式大全
  5. Linux安装jellyfin硬件加速,jellyfin 10.4.3之后无法硬解的解决方法
  6. ubuntu 10.04安装 sopcast player
  7. 思科CCNP在OSPF中设置LSA的简单命令汇总
  8. Vue 微信扫码支付
  9. cruzer php sandisk 闪迪u盘量产工具_sandisk量产工具(闪迪U盘量产工具)
  10. 百度网盘客户端刷不出内容,网页版打不开,怎么办?