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

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

最新县及县以上行政区划代码(截止 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 回帖 • 2 关注
1 操作
alanfans 在 2019-12-31 15:32:46 更新了该帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • alanfans
    作者

    啥错?

    1 回复
  • 其他回帖
  • lijp

    评论框里,不能直接输入 js 代码,应该是屏蔽了。

    1 回复
  • Java 在做这类事情上 还是感觉代码好多 哈哈

    1 回复
  • lijp

    评论提交 js 有问题啊!!!
    3cc917fa0bde473aafaf7d10db7ae9c7.png

    我认为这段 js 不好的地方是,我人为的给原 html 替换添加了两个样式名称,一个是 class='city'另一个是 class='county'

    9da73c136cd4480792b0294e0a1dedee.png

    1 回复
  • 查看全部回帖

推荐标签 标签

  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    83 引用 • 37 回帖
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 709 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 483 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    28 引用 • 108 回帖 • 2 关注
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 351 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    70 引用 • 375 回帖
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖 • 1 关注
  • 前端

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

    247 引用 • 1348 回帖 • 2 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 65 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖 • 4 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    170 引用 • 414 回帖 • 384 关注
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 3 关注
  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    209 引用 • 2031 回帖
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 683 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 588 回帖
  • 自由行
    11 关注
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    27 引用 • 225 回帖 • 168 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 259 关注
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 638 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    543 引用 • 672 回帖 • 1 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖 • 1 关注
  • 百度

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

    63 引用 • 785 回帖 • 178 关注
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    21 引用 • 37 回帖 • 547 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 2 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    342 引用 • 708 回帖