All Projects → snakejordan → administrative-divisions-of-China-on-Python

snakejordan / administrative-divisions-of-China-on-Python

Licence: GPL-3.0 license
中华人民共和国行政区划爬虫,分为省级、地级、县级、乡级、村级,最多五级连动,可通过本项目自行爬取数据也可使用本项目在线接口直接调用。

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to administrative-divisions-of-China-on-Python

Administrative Divisions Of China
中华人民共和国行政区划:省级(省份直辖市自治区)、 地级(城市)、 县级(区县)、 乡级(乡镇街道)、 村级(村委会居委会) ,中国省市区镇村二级三级四级五级联动地址数据。
Stars: ✭ 11,727 (+12786.81%)
Mutual labels:  address, province, city
china-region
根据国家标准《中华人民共和国行政区划代码》即 GB2260 标准制定,用以查看各个省地县的行政区划代码,并支持多级联动查询
Stars: ✭ 66 (-27.47%)
Mutual labels:  china-city, china-area
Citypicker
citypicker城市选择器,详细的省市区地址信息,支持仿iOS滚轮实现,仿京东样式,一级或者三级列表展示方式。
Stars: ✭ 3,057 (+3259.34%)
Mutual labels:  province, city
China
🇨🇳 一个轻巧的中国的地区、民族以及节假日信息的查询PHP库
Stars: ✭ 51 (-43.96%)
Mutual labels:  address, china-region
Area Puppeteer
基于 puppeteer 的中国行政区域抓取爬虫
Stars: ✭ 144 (+58.24%)
Mutual labels:  address, city
PSCityPickerView
城市选择器,可以选择国内所有的城市和地区
Stars: ✭ 47 (-48.35%)
Mutual labels:  address, city
ir-city-select
List of Iran provinces and cities to use in HTML forms. ( ~2.3KB gzipped )
Stars: ✭ 22 (-75.82%)
Mutual labels:  province, city
google streetview
A command line tool and module for Google Street View Image API
Stars: ✭ 77 (-15.38%)
Mutual labels:  address, city
Jhaddresspickview
省市区选择器,省市二级选择,省市区三级选择,PickView,地址选择器
Stars: ✭ 12 (-86.81%)
Mutual labels:  address, city
Expostal
Elixir binding for Libpostal - a library for parsing/normalizing street addresses around the world. Powered by statistical NLP and open geo data.
Stars: ✭ 80 (-12.09%)
Mutual labels:  address
Nice Lua
基于xlua的MVVM框架,支持Addressables, 统一渲染管线等Unity新特性
Stars: ✭ 207 (+127.47%)
Mutual labels:  address
Find github email
The warmest start to a cold email
Stars: ✭ 72 (-20.88%)
Mutual labels:  address
Ship
A simple, handy network addressing multitool with plenty of features
Stars: ✭ 81 (-10.99%)
Mutual labels:  address
Addok
Search engine for address. Only address.
Stars: ✭ 226 (+148.35%)
Mutual labels:  address
Neb.js
Stars: ✭ 80 (-12.09%)
Mutual labels:  address
covid-19-usa-by-state
CSV files of COVID-19 total daily confirmed cases and deaths in the USA by state and county. All data from Johns Hopkins & NYT..
Stars: ✭ 35 (-61.54%)
Mutual labels:  county
Usaddress
🇺🇸 a python library for parsing unstructured address strings into address components
Stars: ✭ 1,165 (+1180.22%)
Mutual labels:  address
Bitcoinaddress
Bitcoin Wallet Address Generator
Stars: ✭ 52 (-42.86%)
Mutual labels:  address
vicopo
API HTTP et Script pour trouver les villes à partir d'un code postal et code postaux à partir d'une ville
Stars: ✭ 27 (-70.33%)
Mutual labels:  city
Vanitysearch
Bitcoin Address Prefix Finder
Stars: ✭ 160 (+75.82%)
Mutual labels:  address

中华人民共和国行政区划数据

license author

环境要求

  • macOS or Linux or Windows
  • python (3.6+)
  • pip
  • sqlite3

依赖包

requests_html pyquery sshtunnel redis

数据来源

数据来源说明:

中华人民共和国行政区划官方数据分为两个渠道(本人已知渠道,如有其它官方渠道可通过 issues 进行交流),分别为民政部统计局,本项目采用统计局数据。

数据来源区别:

  • 民政部:

    • 数据历史久远,包括从 1980 年至今行政区划数据;
    • 数据层级较少,最多分为省、市、区三级数据。
  • 统计局:

    • 数据历史较新,包括从 2009 年至今行政区划数据;
    • 数据层级较多,最多分为省级、地级、县级、乡级、村级五级数据。

本项目数据源:

为了数据更详细,所以采用统计局数据,具体数据源链接如下:

统计用区划代码和城乡划分代码编制规则:

参考:统计用区划代码和城乡划分代码编制规则

配置文件

# 为 True 会详细显示操作中的每句日志内容。
SHOW_LOG = True

# 爬虫每次爬取后的休眠时间,单位为秒,正常情况下无需休眠。
CRAWLER_SLEEP_TIME = 0

# csv 输出文件的字符编码,默认为 UTF-8,为了 Microsoft Office Excel 可以正常显示可以设置为 GBK,但是 GBK 可能会出现字符编码异常导致程序运行失败。
CSV_OUTPUT_FILE_ENCODING = 'UTF-8'

# Redis 地址
REDIS_HOST = '127.0.0.1'
# Redis 端口
REDIS_PORT = 6379
# Redis 密码
REDIS_PASS = ''
# Redis 库号
REDIS_DB = 3

# Redis 服务器在本地不可访问的远程服务器时,可通过配置 ssh 隧道的方式访问 Redis,从而保存数据到远程 Redis 服务器。
# SSH 隧道地址
SSH_HOST = ''
# SSH 隧道端口
SSH_PORT = 22
# SSH 隧道用户名
SSH_USERNAME = ''
# SSH 隧道密码
SSH_PASSWORD = ''
# SSH 隧道证书文件(完整物理路径)
SSH_PKEY = ''
# SSH 隧道绑定地址
SSH_BIND_HOST = '127.0.0.1'
# SSH 隧道绑定端口
SSH_BIND_PORT = 6379

数据格式

-- 省级
CREATE TABLE `province` (`statistical_code` CHAR(12) PRIMARY KEY, `code` CHAR(2), `name` VARCHAR(100))
-- 地级
CREATE TABLE `city` (`statistical_code` CHAR(12) PRIMARY KEY, `code` CHAR(4), `name` VARCHAR(100), `province_statistical_code` CHAR(12))
-- 县级
CREATE TABLE `county` (`statistical_code` CHAR(12) PRIMARY KEY, `code` CHAR(6), `name` VARCHAR(100), `province_statistical_code` CHAR(12), `city_statistical_code` CHAR(12))
-- 乡级
CREATE TABLE `town` (`statistical_code` CHAR(12) PRIMARY KEY, `code` CHAR(9), `name` VARCHAR(100), `province_statistical_code` CHAR(12), `city_statistical_code` CHAR(12), `county_statistical_code` CHAR(12))
-- 村级
CREATE TABLE `village` (`statistical_code` CHAR(12) PRIMARY KEY, `code` CHAR(12), `name` VARCHAR(100), `province_statistical_code` CHAR(12), `city_statistical_code` CHAR(12), `county_statistical_code` CHAR(12), `town_statistical_code` CHAR(12))

数据格式

使用说明

完成环境配置及依赖安装后,可通过运行 main.py 文件的方式运行本项目,本项目运行后采用交互式命令行进行交互提示。

运行命令:

$ python3 main.py

功能列表:

  • 抓取统计局信息并保存入库。(输入1)
  • 导出统计局信息中所有省、地、县、乡、村数据的 csv 版本。(输入2)
  • 导出统计局信息中所有省、地、县、乡、村数据的 json 版本。(输入3)
  • 导出统计局信息中所有省、地、县、乡、村数据到 Redis。(输入4)

运行示例:

运行示例

在线接口

五级在线接口地址:

请求参数:

除省级无需请求参数以外,其它四级均需要名称为 topCode 的上级编号作为请求参数,topCode 的值为上一级数据的 statistical_code 值。

请求方法:

支持 GET POST PUT 等请求方法,支持 XHR fetch 等请求方式。

Postman 示例:

省级示例:

省级示例

地级示例:

地级示例

县级示例:

县级示例

乡级示例:

乡级示例

村级示例:

村级示例

特例:

部分地区不存在五级数据,为保证一致性接口统一返回五级数据,本级数据与上级数据的 statistical_code 相同时意味着层级不足五级,需调用者进行额外处理。

例如:

广东省(440000000000) -> 东莞市(441900000000) -> 东城街道办事处(441900003000) -> 岗贝社区居民委员会(441900003001)

接口调用及返回参考下图:

东莞市省级示例:

东莞市省级示例

东莞市地级示例:

东莞市地级示例

东莞市县级示例:

东莞市县级示例

东莞市乡级示例:

东莞市乡级示例

东莞市村级示例:

东莞市村级示例

下载数据

已完成以下年份(2009、2010、2011、2012、2013、2014、2015、2016、2017、2018)的 sqlite3 格式数据采集,需要 sqlite3 格式数据可通过邮件 [email protected] 索取。

提示:邮件回复的下载链接为 google drive 中存储的文件,是否能下载你懂得🙃

Over

恩,以上是所有说明,后面没有要说的了😊


特别鸣谢

本项目是受 modoodAdministrative-divisions-of-China 项目启发而编写,由于不擅长 NodeJS 以及觉得 Administrative-divisions-of-China 在数据及使用便利性上有一点点问题,所以重复造了个轮子,在此对 modood 表示特别鸣谢。

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].