拉取最新县及县以上行政区划代码

本贴最后更新于 1791 天前,其中的信息可能已经渤澥桑田

最新县及县以上行政区划代码(截止 2016 年 7 月 31 日)

url:http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201703/t20170310_1471429.html(网站 404)

更多数据

可以通过 UNPKG 下载使用 CDN 资源: https://unpkg.com/province-city-china/dist/

文件列表 JSON CSV SQL CDN
总数据(省/地/县/乡) data.json data.csv data.sql data.sql / csv / json
省/地/县/乡层级数据 level.json - - level.json
省级(省/直辖市/特别行政区) province.json province.csv - province.json / csv
地级(城市) city.json city.csv - city.json / csv
县级(区县) area.json area.csv - area.json / csv
乡级(乡镇/街) town.json town.csv - town.json / csv
县市区没有乡级数据

参考代码:http://www.thinksaas.cn/topics/0/353/353549.html
工具:jsoup

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.apache.commons.lang3.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class getpcd {

	/**  
	 * All rights Reserved, Designed By www.vps6.win
	 * @Title:  getpcd.java   
	 * @Package   
	 * @Description:    TODO(用一句话描述该文件做什么)   
	 * @author: liuchao     
	 * @date:   2017年4月27日 下午10:52:40   
	 * @version V1.0 
	 * @Copyright: 2017 www.vps6.win Inc. All rights reserved. 
	 * 
	 */
	private static final Logger log = Logger.getLogger("xzqhdm");
	private static final String separator = "#";
	public static void main(String[] args) throws Exception {
		List<String> list = getData();
		for(String s : list){
			System.out.println(s);
		}
		saveData(list);
	}

	private static List<String> getData() throws Exception {
		List<String> retList = new ArrayList<String>();
		Map<String,String> map = new HashMap<String,String>();

		Document doc = Jsoup.connect("http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201703/t20170310_1471429.html").post();
		Elements ps = doc.select(".TRS_PreAppend p");
		for (Element e : ps) {
			Elements spans = e.select("span");
			Element firstE = null;
			Element secondE = null;;
			
			if(spans.size() == 3){
				//一级
				firstE = spans.first();
				secondE = spans.get(2);
			}else{
				//二级/三级
				firstE = spans.get(1);
				secondE = spans.get(3);
			}
			String key = StringUtils.trim(firstE.ownText());
			map.put(key, key+separator+StringUtils.trim(secondE.ownText().replace(" ", ""))+ separator + key.substring(0, 4)+"00"+separator+"3");
			if (key.endsWith("0000")) {
				map.put(key, key+separator+StringUtils.trim(secondE.ownText().replace(" ", ""))+ separator+"0"+separator+"1");
				//key = key.substring(0, 2);
			} else if (key.endsWith("00")) {
				map.put(key, key+separator+StringUtils.trim(secondE.ownText().replace(" ", ""))+ separator+key.substring(0, 2)+"0000"+separator+"2");
				//key = key.substring(0, 4);
			}
			if(map.get(key) == null){
				System.out.println(key);
			}
			retList.add(map.get(key));
		}
		return retList;
	}

	private static void saveData(List<String>  list) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(
					"jdbc:mysql://localhost/test?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull",
					"root", "root");
			conn.setAutoCommit(false);// 事务不自动提交

			pstmt = conn.prepareStatement("delete from code");
			int count = pstmt.executeUpdate();
			log.log(Level.INFO, "___删除数据" + count);

			int batch = 500;// 一次插入多少笔
			int loop = list.size() / batch;// batch可以循环的次数
			int last = list.size() - batch * loop;// 最后剩余
			int start = 0;// list从哪开始取数据
			int index = 1;// 问号参数
			int allCount = 0;// 统计总共插入多少数据

			for (int i = 0; i < loop; i++) {
				index = 1;// 重置到第一个问号参数
				pstmt = conn.prepareStatement(getPreSql(batch));
				for (int j = start; j < start + batch; j++) {
					String[] s = list.get(j).split(separator);
					for (int k = 0; k < s.length; k++) {
						pstmt.setString(index, s[k]);
						index++;
					}
				}
				count = pstmt.executeUpdate();
				allCount += count;
				log.log(Level.INFO, "___插入数据" + count);
				start += batch;
			}

			if (last > 0) {
				index = 1;// 重置到第一个问号参数
				pstmt = conn.prepareStatement(getPreSql(last));
				for (int j = start; j < list.size(); j++) {
					String[] s = list.get(j).split(separator);
					for (int k = 0; k < s.length; k++) {
						pstmt.setString(index, s[k]);
						index++;
					}
				}
				count = pstmt.executeUpdate();
				allCount += count;
				log.log(Level.INFO, "___插入数据" + count);
			}
			log.log(Level.INFO, "___一共插入" + allCount);

			conn.commit();// 提交事务
			conn.setAutoCommit(true);// 还原现场

		} catch (ClassNotFoundException e) {
			log.log(Level.SEVERE, "___找不到MySQL驱动包" + e.getMessage());
			e.printStackTrace();
		} catch (Exception e) {
			log.log(Level.SEVERE, "___执行SQL异常" + e.getMessage());
			e.printStackTrace();
			try {
				if (conn != null) {
					conn.rollback();
					conn.setAutoCommit(true);// 还原现场
					log.log(Level.WARNING, "___回滚数据");
				}
			} catch (SQLException e1) {
				log.log(Level.SEVERE, "___回滚异常" + e.getMessage());
				e1.printStackTrace();
			}
		} finally {
			try {
				if (pstmt != null) {
					pstmt.close();
				}
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				log.log(Level.SEVERE, "___关闭数据库连接异常" + e.getMessage());
				e.printStackTrace();
			}
		}
	}

	/**
	 * 生成sql
	 *
	 * @return
	 */
	private static String getPreSql(int count) {
		StringBuilder sb = new StringBuilder();
		sb.append("INSERT INTO `code` (`code`, `name`,`pcode`,`type`) VALUES");
		for (int i = 0; i < count; i++) {
			sb.append("(?, ?, ?, ?),");
		}
		return sb.substring(0, sb.length() - 1);
	}
}

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • JSONP
    4 引用 • 11 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    691 引用 • 535 回帖
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
1 操作
alanfans 在 2019-12-31 15:32:46 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 2 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    167 引用 • 1513 回帖
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    85 引用 • 165 回帖 • 4 关注
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    176 引用 • 815 回帖
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 156 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3453 回帖 • 202 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 210 关注
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    26 引用 • 84 回帖
  • OnlyOffice
    4 引用 • 2 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 743 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    568 引用 • 3532 回帖
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1348 回帖 • 2 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 356 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    153 引用 • 3783 回帖 • 1 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    53 引用 • 37 回帖 • 1 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    222 引用 • 473 回帖
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 723 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖 • 1 关注
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 176 关注
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 156 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    15 引用 • 122 回帖