从统计局采集最新的省市区镇数据,用js在浏览器中运行 V2
本文描述的是对国家统计局于
2019-01-31
发布的《2018年统计用区划代码和城乡划分代码(截止2018年10月31日)》的采集。相对于用于和采集
2016版
、2017版
的js代码做了比较大的优化和调整,就开一遍文章来介绍这个V2版本。老版本文章。
本文更新(移步查阅):
19-04-15 新采集了2018的省市区三级坐标和行政区域边界
19-03-22 采集了2018的城市数据数据下载 GitHub:https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov/releases
数据预览
数据来源
国家统计局统计标准《2018年统计用区划代码和城乡划分代码(截止2018年10月31日)》,截稿时是最新的。
数据采集
对于数据采集,根据工作需要,对于一些小的数据采集功能有些接触。因为对html
和js
熟些,很早以前就用IE浏览器
对本地html
文件支持任意跨域ajax
请求数据、和支持读写Excel文件
,就直接写一个html文件
作为采集工具给别人使用,批量查询人员资料、考试结果什么的功能。所以采集省市区数据主要用的js
。
由于新版本chrome对编码有问题,统计局的是gb2312
,会乱码,chrome 41
古董版本没有问题,所以采集都是在chrome41
下完成的,自己制作Chrome便携版实现多版本共存。
1. 抓取原始数据
涉及源码:1_抓取国家统计局城市信息.js
进入统计局页面,执行代码即可完成抓取,开了4个模拟的线程,抓取省市区镇4级数据还是很快的,采集了3400+页面,首次运行大概1分多钟完成采集(我这个截图是开了浏览器缓存,所以有4秒的假象,编写本文时有个url挂逼了,不知道是不是统计局服务器出了问题)。
抓取完成后会自动弹出保存文件数据。
2. 拼音转换
这个需要找一个接口对文字进行拼音转换,只有一个要求:重庆
能正常的翻译成chong qing
即可,翻译成zhong qing
的就low了。满足这个条件,百度上搜索到的翻译小网站99%就被干掉了。
另外Github上很多star很高的开源库的转换表现也并不理想,试过hotoo/pinyin
,开了分词,多音字的结果还是不是差了一点半点,放弃了。最后采用的hankcs/HanLP的python库来进行转换,对地名多音字的支持还是有限的,都
字地名很多转换成dou
囧,不过在同类型里面算是最好的。
还是以前找到的翻译接口https://www.qqxiuzi.cn/zh/pinyin/
对拼音的转换准确度最高,据说依据《新华字典》、《现代汉语词典》等规范性辞书校对
。不过这个站从去年开始对IP会有限制,以前是随便转换,从2017版数据采集开始进行了克制处理,整个翻译过程接口调用不超过10次,中间可能需要换1-3次代理(已实现用js自动化切换代理)。
转换过程
因为本次采集的数据量比较多,省市区3级数据仅3400来条,但包含了镇这级的4.2万多条数据,转换压力有点大。因此采取了省市区3级使用qqxiuzi
的高准确度接口,镇级的采用本地HanLP
转换接口。并且转换时采用全名称进行转换,相比以前使用精简的短名多音字方面称更加准确。
本地用HanLP库进行转换一遍,低准确度
涉及源码:2_1_抓取拼音.js
先打开拼音转换python服务
,服务程序在Github.pinyin-python-server目录内,根据介绍进行运行。
然后在刚才那个抓取页面里执行js代码即可。写稿时重新转了一遍,用了4个模拟线程,花了5分钟时间,4.7万条数据全部转完。
为啥不用python
直接转,非要走一遍http请求?答:不会写,也方便不用本地搭建服务,使用别的机器提供的接口(我搭建了一个临时的拼音接口测试服务器,可以测试)。
使用qqxiuzi对省市区3级重新转换一遍,高准确度
涉及源码:2_2_抓取拼音.js
在http://www.qqxiuzi.cn/zh/pinyin/
运行代码,然后根据提示导入上一步保存的数据即可,再次运行代码即可,如果被屏蔽IP,需要手动切换代理,或者根据源码里面的提示设置SwitchyOmega
自动切换代理。
整个转换过程大概需要1分钟左右,查找有效代理慢的话可能需要更久。(源码里面缓存拼音结果部分代码错误,等下次采集在修复吧,写稿子时候发现的)
3. 处理数据和导出CSV
涉及源码:3_格式化.js
处理数据就相对简单些了,但花的时间最多,因为要去分析数据。额外添加了港澳台海外4个数据。另外去掉民族自治区、州、县、旗;民族乡、镇后缀。还有去掉统计出来比较多的几个后缀,市|县|镇|乡|街道|街道办事处|地区办事处|社区服务中心
,有些比较少的后缀没有去掉,去掉有可能有些地名有歧义。
代码运行完成就自动弹出保存csv文件数据了。
最后
数据下载和相关问题请到 Github查看:https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov
releases内有处理好的3级或者4级 csv数据提供下载。
如果这个库有帮助到您,请 Star 一下。
从统计局采集最新的省市区镇数据,用js在浏览器中运行 V2的更多相关文章
- 从统计局采集最新的省市区县数据,纯js
本文更新(移步查阅): 19-04-15 新采集了2018的省市区三级坐标和行政区域边界 19-03-22 采集了2018的城市数据 18-11-28 采集了2017的城市数据 数据下载 GitHub ...
- 从高德采集最新的省市区三级坐标和行政区域边界,用js在浏览器中运行
本文描述的是对国家统计局于2019-01-31发布的<2018年统计用区划代码和城乡划分代码(截止2018年10月31日)>中省市区三级的坐标和行政区域边界的采集. 本文更新(移步查阅): ...
- 中国省市区json数据 三级联动
<label> <span>购买地址</span> <select name="PurchaseProvince" style=" ...
- 省市区三级数据的MYSQL内容
省市区三级数据的MYSQL内容 省: /* Navicat MySQL Data Transfer Source Server : rm-2ze0lz594rof5nn72.mysql.rds.ali ...
- Mysql 保留最新的10条数据
Mysql每天执行计划,保留最新的10条数据,其余的删除 1.Mysql 保留最新的10条数据 sql语句: DELETE tb FROM tbname AS tb,( SELECT id FROM ...
- sql 查询某个条件多条数据中最新的一条数据或最老的一条数据
sql 查询某个条件下多条数据中最新的一条数据或最老的一条数据 test_user表结构如下: 需求:查询李四.王五.李二创建的最初时间或者最新时间 1:查询最初的创建时间: SELECT * FRO ...
- 性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据
基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据 by:授客 QQ:1033553122 实现功能 测试环境 环境搭建 使用前提 使用方法 运行程序 效果展 ...
- sqlServer 获取最新的一条数据
SQL语句获取最新一条的数据 * from tra.dbo.订单 order by 下单时间 desc --时间倒序排列取第一条 select * from tra.dbo.订单 where 下单时间 ...
- “必须执行Init_Clk函数,才能采集到二氧化碳接口485数据的问题”的解决
这个问题困扰了我很长一段时间,而且如果这个问题不解决,就有一个无法调和的矛盾:执行Init_Clk函数,能采集到二氧化碳接口485数据,但是功耗大:不执行Init_Clk函数,不能采集到二氧化碳接口4 ...
随机推荐
- java集合继承关系图
面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 数组虽然也可以存储对象,但长度是固定的:集合长度是可变的,数组中可以存储基 ...
- SQL server 导出平面文件时出错: The code page on Destination - 3_txt.Inputs[Flat File Destination Input].Columns[UserId] is 936 and is required to be 1252.
我在导出平面文件时:Error 0xc00470d4: Data Flow Task 1: The code page on Destination - 3_txt.Inputs[Flat File ...
- gif软件(ShareX)
介绍 官网:https://getsharex.com/ 开源,免费的一款软件,录制GIF功能简单,按下快捷键,选取指定的区域即可进行录制,录制完成后的文件默认存放在个人文件夹,整个过程几乎几打断你的 ...
- CharacterController平滑移动到某点
通常使用CharacterController控制玩家移动时,我们都会写以下代码: void Update() { var move = (moveTarget - transform.Positio ...
- Pyqt5+python+ErIC6+QT designer
Eric6安装及配置 https://blog.csdn.net/weixin_41656968/article/details/80253012 Python3.6+PyQt5+Eric6.0环境配 ...
- web测试笔记
WEB兼容性测试 一.客户端兼容性 1.浏览器的兼容性测试 a.内核角度 Tridnt内核:代表作IE.腾讯.遨游.世界之窗等 Gecko内核:代表作Firefox webkit内核:代表作Safar ...
- 实现Github和Coding仓库等Git服务托管更新
如何使Github.Coding.Gitee 码云 同时发布更新,多个不同Git服务器之间同时管理部署发布提交 缘由 因为在Github上托管的静态页面访问加载速度较为缓慢,故想在Coding上再建一 ...
- windowsserver2019系统下载
windowsserver2019系统分为标准版和数据中心版,两个版本和windows2012,2016一样没有64位系统,点击下载windowsserver2019系统.
- 力扣算法题—051N皇后问题
#include "000库函数.h" //使用回溯法来计算 //经典解法为回溯递归,一层一层的向下扫描,需要用到一个pos数组, //其中pos[i]表示第i行皇后的位置,初始化 ...
- CISCO静态路由配置
静态路由:手动添加路由条目到路由表中 优点:没有额外的路由cpu负担,节约带宽,增加网络安全性. 缺点:必须去了解整个拓扑结构,如果网络拓扑发生变化,需要在所有r路由上手动修改路由表. 实验拓扑如下: ...