项目的省市区有些陈旧,在国家民政局查询最新数据
打开后发现是一个网页,毫无格式可言,自己项目要想使用就必须提取
本来打算写个程序,发现很麻烦,就直接看了看他的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