最最最简单从官方获取最新行政区划代码、区划拼音

本文是好长时间前写的,想着边操作边记录,结果… 大家也知道——失败了!!!
原因就是:有人在github上开源了最新最全的数据,自己便放弃倒腾了,抓紧时间复命去了,以下本想着删掉,但还是于心不忍,作为一个失败的经历发出来。

本文只是获取到省市县的 JSON 结构的字符串,并无后续处理数据
不喜欢看的就直接拉到最后

我的需求场景

项目需要获取省市县联动,行政隶属规划今年也变动频繁,但现在没有最新的数据集。数据采集我也不会啊(暗自流泪)。
我现在的问题是怎么获取比较权威的最新数据,网上点点点终于找到这种投机取巧的方式——从政务网获取。
全国行政区划信息查询平台http://xzqh.mca.gov.cn/map

注意事项

  1. 若网站结构变更的话就不是本文的适用范围了(都是扯淡,反正失败了)
  2. 收集的只有省市县三级行政区划信息。
  3. 包含拼音、简拼和全拼。

该网站页面分析

点开页面可以看到如下图所示,页面js也是没有压缩,可以很好的分析它渲染的逻辑。
政府网页面展示

获取级联数据

发现数据

可以看到页面提供了一个检索功能,输入一个字符下拉框会立马渲染出符合该字符的选项。

所以只需要获取行政区划码和区划名称等其他相关信息就能满足我的需求

数据结构分析

另外行政区划码是有规律的:详情百度百科

第一、二位表示省(自治区、直辖市、特别行政区)。
第三、四位表示市(地区、自治州、盟及国家直辖市所属市辖区和县的汇总码)

{cName: "北京市", code: "110000", py: "Beijing Shi", jp: "bjs", qp: "BeijingShi"}

右键检查一下调出开发工具,可以看到如下,注意一下框选的内容
开发工具界面
该 form 是检索的 form 控件,其中隐藏的 input 控件的值就是全部是级联数据(纳尼!!刊-单是滴<かんたんすぎ>)

到此不敢相信自己的眼睛,

开搞开搞

  • 其详细细节如下图
    在这里插入图片描述
  • 检查是否支持jQuery,控制台输入『$ 』 然后按回车 。喔~~支持
  • 发现这个 input 居然有 id,其 id 值是 ”pyArr“
  • 使用 $("#pyArr").val() 就能获取到字符串为,数据结构为 JSON 的数据了
    接下来就是瞎折腾这 3213 条数据。
var str = $("#pyArr").val();
var arrjson = JSON.parse(str);
arrjson.length
arrjson[0]

转为sql语句

假使区划表为 ‘xzqh’ 表,对应sql 提取的js 如下

var sql = "";
arrjson.forEach(function (v) {
	let ks = [],vs = [];
    for (let k in v) {
		ks.push(k);
		vs.push(v[k]);
    }
    // 因为部分拼音或汉字名称中有英文单引号分割,不能使用英文单引号
	let str = "insert into xzqh ("+ks.join()+") values(\""+vs.join("\",\"")+"\");\r\n"
    sql += str;
});
console.log(sql);

最后得到如下的(有省略)

insert into xzqh (cName,code,py,jp,qp) values(“北京市”,“110000”,“Beijing Shi”,“bjs”,“BeijingShi”);
insert into xzqh (cName,code,py,jp,qp) values(“东城区”,“110101”,“Dongcheng Qu”,“dcq”,“DongchengQu”);
insert into xzqh (cName,code,py,jp,qp) values(“西城区”,“110102”,“Xicheng Qu”,“xcq”,“XichengQu”);

获取村、街道的数据

我无能为力,github 上有 modood 大神给出了数据

https://github.com/modood/Administrative-divisions-of-China

不喜欢看项目只想打包下载数据的可直接下载 sqllite3文件 data.sqllite (使用 Navicat 可直接打开)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值