Python获取省市县行政区划代码

由于人工填写的省市县数据存在格式不规范、数据不准确等原因,因此数据库常常保存的省市县数据都是以行政区划代码形式保存的,但是读取对应数据的时候我们又希望获取其对应的地区名,因此从官方网站获取行政区划和相应地址字典就很有必要。

本文爬取了中华人民共和国民政部的行政区划数据,如果最新数据有更新,更新对应代码片段即可。

  1. 导入基本库

import requests
from lxml import etree
  1. 解析网页

# 此处为2020年12月中华人民共和国县以上行政区划代码,可对应更改为最新地址
url = 'https://www.mca.gov.cn/article/sj/xzqh/2020/20201201.html'
r = requests.get(url).text
html = etree.HTML(r)
  1. 获取行政区划代码

c = html.xpath('//*[@id="2020年12月份县以上行政区划代码_28320"]/table/tr/td[2]//text()')
len(c)
  1. 获取单位名称

d = html.xpath('//*[@id="2020年12月份县以上行政区划代码_28320"]/table/tr/td[3]/text()')
len(d)
  1. 检查行政区划代码和单位名称,发现len(c)=3210,len(d)=3212,二者长度不一致

检查原网页,发现三沙市的两个区缺失行政区划代码但出现在单位名称中,因此将这两个数据从中删除

d.remove('西沙区')
d.remove('南沙区')
len(d)
  1. 将两列数据匹配为字典

# 匹配时舍去了第一行(标题行)
city_code = dict(zip(c[1:], d[1:]))
  1. 将字典保存为json文件,便于后续使用

import json
with open(r'city_and_code.json', 'w+', encoding='GBK') as f:
    f.write(json.dumps(city_code, ensure_ascii=False, indent=2))  # 缩进2字符
  1. 实际使用时直接从json文件中获取该字典

with open(r'city_and_code.json', "r", encoding="GBK") as f:
    dict_ = json.load(f)
print(dict_)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值