最新的省市區數據源問題


緣由

最近做一個小型微信商城,因為要用到省市區收貨地址的原因(雖然之前整理過,但是數據太老了),所以上網搜了一下相關資料,

結果找到的東西要么數據太老了,要么就是表是分開的(省市區存了三張表),索性自己動手。

我們需要的是一個類似下面這樣的數據結構,區域ID,上級ID,區域名稱,等級,排序,狀態

建好表后,我們有很多解決方案去填充里面的數據

1.做好后台UI,丟給運營去慢慢錄入,是時候折磨一下他們了。

2.找找靠譜的數據源轉換一下然后批量插入,網上大把的js和xml數據源,但是數據是不是最新的就不好說了。

解決

我搜了一下國家統計局的官網,發現了這樣的一個欄目

http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/

找到最新的一篇

http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201703/t20170310_1471429.html

看到這里,是不是第一反應就是趕緊爬下來,然后分析html標簽,拿到編碼和名稱,然后插入到數據庫?有這個反應是正常的,畢竟都是碼農。

但是這樣就太麻煩了,又是創建項目又是寫正則分析dom之類的,我們換一種簡單的方法,

因為這個頁面引用了jquery,所以我們干脆就用js來解決吧,打開chrome 按 F12, 在 console 下面輸入

var element=$('.MsoNormal'),s="",start=99,index=1;
element.each(function(){
var arr=$(this).text().split(' ');
var id=$.trim(arr[0]);
var name=$.trim(arr[1]);
var parent=0;
var level=3;
var sort=0;
if(id.indexOf('0000')>-1){
level=1;
sort=start-index;
index++;
}
else if(id.substring(4)=="00"){
level=2;
parent=id.substring(0,2)+"0000";
}
else{
parent=id.substring(0,4)+"00";
}

s+="INSERT INTO [Sys_Area] ([AreaId],[ParentId],[AreaName],[AreaLevel],[DisplaySequence])";
s+="VALUES ("+id+",'"+parent+"','"+name+"',"+level+","+sort+")";
s+=";";
})
console.log(s)

 

我們就能得到一個完整的最新的省市區數據腳本了,插入數據庫即可,然后完善一下后台的管理UI(樹用的是zTree)

是不是很方便,而且數據是最新的,簡陽已經划到成都下面了,重慶下面的很多縣也改成區了。

但是要注意的一點有部分地區下面是沒有三級區域的,比如中山、東莞等,這個根據自己的情況維護一下就是了。

另外這個數據庫表也比較簡單,可以根據自己項目情況加上 首字母,全拼,簡拼等字段。

后記

寫了這么多年代碼了,從未混跡過大公司,今天突發奇想開了博客記錄一下自己的一些土鱉實戰的心得吧,請各位大牛手下留情。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM