一个获取国家地区最新数据的方法

2024-05-26 12:08

本文主要是介绍一个获取国家地区最新数据的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

缘由

最近做一个小型微信商城,因为要用到省市区收货地址的原因(虽然之前整理过,但是数据太老了),所以上网搜了一下相关资料,

结果找到的东西要么数据太老了,要么就是表是分开的(省市区存了三张表),索性自己动手。

我们需要的是一个类似下面这样的数据结构,区域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)

是不是很方便,而且数据是最新的,简阳已经划到成都下面了,重庆下面的很多县也改成区了。

但是要注意的一点有部分地区下面是没有三级区域的,比如中山、东莞等,这个根据自己的情况维护一下就是了。

另外这个数据库表也比较简单,可以根据自己项目情况加上 首字母,全拼,简拼等字段。

这篇关于一个获取国家地区最新数据的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1004420

相关文章

JAVA实现亿级千万级数据顺序导出的示例代码

《JAVA实现亿级千万级数据顺序导出的示例代码》本文主要介绍了JAVA实现亿级千万级数据顺序导出的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 前提:主要考虑控制内存占用空间,避免出现同时导出,导致主程序OOM问题。实现思路:A.启用线程池

React 记忆缓存的三种方法实现

《React记忆缓存的三种方法实现》本文主要介绍了React记忆缓存的三种方法实现,包含React.memo、useMemo、useCallback,用于避免不必要的组件重渲染和计算,感兴趣的可以... 目录1. React.memo2. useMemo3. useCallback使用场景与注意事项在 Re

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

Java中字符编码问题的解决方法详解

《Java中字符编码问题的解决方法详解》在日常Java开发中,字符编码问题是一个非常常见却又特别容易踩坑的地方,这篇文章就带你一步一步看清楚字符编码的来龙去脉,并结合可运行的代码,看看如何在Java项... 目录前言背景:为什么会出现编码问题常见场景分析控制台输出乱码文件读写乱码数据库存取乱码解决方案统一使

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e