省市区,从国家民政局官网获取最新的省级联动的js代码,js提取

项目的省市区有些陈旧,在国家民政局查询最新数据

打开后发现是一个网页,毫无格式可言,自己项目要想使用就必须提取

本来打算写个程序,发现很麻烦,就直接看了看他的html结构,使用js提取出来还是比较快捷方便的,步骤如下:

1.将民政局行政区域网页右键另存为本地html,主要是因为他本身没有引用jquery,写起来不太方便

2.在本地的html里面head加上jquery的脚本

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/2.1.1/jquery.js"></script>

3.用浏览器打开,使用控制台运行下面的代码ok,我用的是火狐

这样就可以使用了。

 

 

代码如下:

//http://www.mca.gov.cn/article/sj/xzqh/2020/2020/202003301019.html

//这个是扩展方法,用于尾部匹配
String.prototype.endWith=function(endStr){
      var d=this.length-endStr.length;
      return (d>=0&&this.lastIndexOf(endStr)==d)
    }

var provinceList=[];

var provinceItem={};
var cityItem={};
$("tbody tr").each(function(){
	var _codetxt=$(this).find("td").eq(1).text().trim();
	var _code=parseInt(_codetxt);
	var _name=$(this).find("td").eq(2).text().trim();
	if(!(_code>0)){return true;}
	if(_codetxt.endWith("0000"))
	{
		//以上个省的名义添加对应的城市
		if(typeof(cityItem.name)!="undefined")
		{
			provinceItem.city.push(cityItem);
			cityItem={};
		}
		if(provinceItem.city)
		{
			provinceList.push(provinceItem); 
		}
		provinceItem={
				        name: _name,
				        postcode: _codetxt,
				        city: []
				    }; 
	}else if(_codetxt.endWith("00"))
	{
		//将上个市数据完结掉
		if(typeof(cityItem.name)!="undefined"&&cityItem.area.length<=0)
		{
			cityItem.area.push({
                name: "市辖区",
                postcode: (parseInt(cityItem.postcode)+1)+""
            });
		}
		if(typeof(cityItem.name)!="undefined")
		{
			provinceItem.city.push(cityItem); 
		} 
		cityItem={
		            name: _name,
		            postcode: _codetxt,
		            area: []
			    };

	}
	else 
	{
		//直辖市
		if(provinceItem.name&&typeof(cityItem.name)=="undefined")
		{
			//区升级为city,下包含一个区/县
			provinceItem.city.push({
					            name: _name,
					            postcode: _codetxt,
					            area: [{
					                name: "区",
					                postcode: _codetxt+"_0"
					            }]
					        });
		}
		else
		{
			//区
			//console.log(_codetxt);
			areaItem={
			            name: _name,
			            postcode: _codetxt
	            };
	        cityItem.area.push(areaItem);
		}
	} 

});

console.log(provinceList);

2020-07月抓取的数据如下

数据有点长就不放进来了,大家自己抓取一样的,也可以去下载

https://download.csdn.net/download/fengyunxuanhai/12620543

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值