您的位置:晶晶的博客>PHP>全国各省、市、县、镇、村的mysql数据库和JSON格式数据

全国各省、市、县、镇、村的mysql数据库和JSON格式数据

2016-07-17更新:本文已有最新版数据,请移步:http://blog.jjonline.cn/phptech/210.html

------------------

直接开门见山了,放出下载地址先:

1、http://blog.jjonline.cn/soft/J_Position/ajing.sql.gz

phpmyadmin压缩导出的mysql库,库名:ajing,内有6个表,一个表不带后缀的是原始数据,每一行是一个村,从省至村;另外5个带后缀的表是相关联的,关联id为各自的行政编码,例如湖北省id为420(其实是42,数据库中省份编码均是3位数字,最后一个0是多余的),宜昌市id为4205(然后用8个0补齐就是420500000000),当阳市(我的家乡,县级市)为420582(然后用6个0补齐就是420582000000),以此类推。

大小: 17164601 字节(16.3M)

修改时间: 2014年7月16日, 13:02:02

MD5: A170D11E82A2532CE29574C46739B9CA

SHA1: 6D0FE378E2D6AB007E5F5977B4039E9E28DE5431

CRC32: 2AABF023

2、http://blog.jjonline.cn/soft/J_Position/ajing_position.7z

这个是phpmyadmin导出的sql文件,与第一个文件是一致的,然后使用360压缩软件压缩7z格式,原始sql文件170几兆太大了。

大小: 10363487 字节(9.88M)

修改时间: 2014年7月16日, 13:09:03

MD5: 2A3916A6617F7507FADB98E34341F59E

SHA1: 517F07DC7221BAE0DA5857BB77941E50388B4CE0

CRC32: C4FF8237

3、http://blog.jjonline.cn/soft/J_Position/j_position.7z

这个文件是第一个文件中提到的mysql库中的不带后缀的表。

大小: 6206567 字节(5.91M)

修改时间: 2014年7月15日, 23:08:57

MD5: EC7F7F500E7888FB36639FD76A598337

SHA1: E0EE991F7B2AE8B1EA96DDBF49BADF7B6434B853

CRC32: 75D1A75A

4、http://blog.jjonline.cn/soft/J_Position/positionJson.7z

这个文件是读取网页后产生的json格式的数据文件,分市(city)、县(county)、镇(town)以及村(village)分别保存的json后缀的文本文件,文本格式为json。每个省下的市县镇村均已该省代码明明,例如湖北省下的市为./positionJson/city/420.json、县为./positionJson/county/420.json、镇为./positionJson/town/420.json、村为./positionJson/village/420.json,以此类推。

这个json文件主要是为了各位自己去读取并按照自己的格式要求插入数据库的。

大小: 5384282 字节(5.13M)

修改时间: 2014年7月16日, 13:12:22

MD5: D862A925839F1358984607A63E79C701

SHA1: E47DD7C7BC2A815E15664D7529C7DC2268B8CB36

CRC32: EDB0B0AC

====

还记得两年前,那个时候对PHP还不甚了解,就是找本文所分享的东西,网上找到的数据要么非常老旧,要么不全;然后每个群里到处发消息找人要,当时的想法很简单,就是群里一定有做电商的程序猿,找他们拿一个全国省、市、县的统计数据相当的简单,结果等了一天没任何反应;要么是人家觉得太简单不理咱这个菜鸟,要么是大家各忙各的,压根就没时间去理会一条渺小的消息。

这个事情给我的触动非常大,网络上知识虽多,却也不乏错误、不全乃至老旧的问题,或一篇文章你抄我我抄你的这种情况;需求者往往要花费较多的时间去搜索、甄别;最可恶的是常常会看到一篇有错误或并不完善的文章被转来转去,搜索的关键词翻了几十页还能看到的情况......

嗯,貌似跑题了,还是回入正题。本文分享的省、市、县、镇、村的数据源为:http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2013/index.html 这个网址就不介绍了,这个数据源是目前最新、最全乃至最权威的数据源。

该数据源是html格式的,需要先爬html页面,然后按关联关系读出里面的数据,刚开始写的程序是边爬页面边读出数据,没考虑到需要读取的总html文件数高达4万多个,程序运行了12个小时候才发现有些数据爬漏了(数据源服务器偶尔犯浑返回404错误,而程序里没处理这种情况),发现这个问题后就改变了策略,先down下这个数据源里的所有页面数据,然后读本地的html数据生成json文件,down完后再写程序边读边检查,确保该数据源里的所有html页面均成功down到本地。down到本地并检查完整性,这个过程持续了16个小时,索性程序自动化进行,就是时间太长了点-------4万多个html页面,纵使一个html花费1秒,也需要4万多秒(十几个小时),还算正常,加之完整性检查16个小时还算可以吧!

保存这些html文件的文件夹属性

(下载的所有html文件夹属性示意图)

接下来就是正则匹配各个页面(并处理各个页面的关联关系成mysql字段),产生了上述第四个文件夹中的所有json文件,然后读这些json文件插入到mysql中,最终产生了完整的省、市、县、镇、村的库,供其他应用调用。这个过程,产生json比较耗时,一个省(省、直辖市并列处理)平均需要30分钟,31一个省(以及直辖市)花了大半天;然后读json插入数据库,这个比较快,每1000条一个插入,2个多小时就搞定。

本地centos虚拟机处理json并插入mysql的资源暂用情况

(读取json插入mysql时本地虚拟机内的centos资源情况)

有人问:“为什么不直接读html并处理后直接插入msyql,还要产生json后再读了插入?”其实这是为了其他程序猿调用方便而已,我这里的json实际上也可以被认为是一种数据存储的方式而已。

看本文第二种图,本地虚拟机内的小512M内存的centos内存已被吃光,swap也快耗尽。

转载请注明本文标题和链接:《全国各省、市、县、镇、村的mysql数据库和JSON格式数据

相关推荐

网友评论14

路人甲 表情
Ctrl+Enter快速提交
  1. #1

    正好要用到这个,十分感谢!

    Bruno电商技术™ 1年前 (2016-07-15) 回复
  2. #2

    最近在做一个项目的时候,发现广东---东莞 到这就断了,后面的数据就没了,去数据库里面确认确实没有 镇 区 村级的数据,不知到大家有没有留意过么! 东莞!东莞!东莞!东莞!东莞!

    Zsoner 1年前 (2016-07-05) 回复
    • @Zsoner:这周抽空把最新的再抓一次,做个严格的检查,数据源偶尔返回404,没抓到页面也有有可能的,自然就丢失数据啦~

      晶晶 1年前 (2016-07-06) 回复
  3. #3

    2014年统计用区划代码和城乡划分代码
    http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2014/index.html
    博主上面用的数据是2013年8月份的了,比较老的了,目前有到截止2014年10月31日的数据了,是否更新一次呢?

    流风 1年前 (2016-06-17) 回复
    • @流风: 好吧  得空的时候抓下来 更新下~

      晶晶 1年前 (2016-06-20) 回复
  4. #4

    LZ大才。万分感谢你的分享。
    2014年数据已出(http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2014/index.html),如果您有空且爬虫程序尚在,请求您更新一下。

    laosanca 1年前 (2016-03-07) 回复
    • @laosanca:嗯,有空再抓下来开放出来

      晶晶 1年前 (2016-03-11) 回复
  5. #5

    感谢博主分享,劳动不易,支持一下。

    zycool 2年前 (2015-09-02) 回复
  6. #6

    看来博主也喜欢用php写爬虫,如果只要省市县的话,看了下这个数据也是很好的,至少不用爬这么多页面。http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201504/t20150415_712722.html

    同好php 2年前 (2015-06-11) 回复
  7. #7

    many many thanks 你

    Axer 2年前 (2015-05-29) 回复
  8. #8

    直到我学会了Ctrl+C和Ctrl+V之后,我的经验小康啦,一口气拿3点不费事

    该昵称已屏蔽 2年前 (2015-03-02) 回复
  9. #9

    请问有处理过程的代码没?

    艺搜天下 3年前 (2014-08-09) 回复
    • @艺搜天下:我写的爬html数据源的程序语言是php,其实没什么技术含量;很普通的file_get_contents函数,然后正则匹配出里面的url,url继续file_get_contents;按省份爬,file_get_content一个页面就file_put_contents写入(当然,写入得按照原先的路径规则)[可爱] 正则匹配可能有点麻烦,可以使用phpQuery这个开源库。file_get_contents时可能数据源服务器会返回404,这就要while循环检测了。

      晶晶 3年前 (2014-08-09) 回复