2024年7月全国省市区编码json文件

采集源来2023年国家统计局的数据,如下链接
2023年统计用区划代码和城乡划分代码

JSON文件下载地址
链接: https://pan.baidu.com/s/1s3kw-ZKSa5dORdgsRNpESA?pwd=37fn 提取码: 37fn 


采集程序如下:

# 2024年7月12日采集的数据

import requests
from bs4 import BeautifulSoup
import json

base_url = "https://www.stats.gov.cn/sj/tjbz/tjyqhdmhcxhfdm/2023"
provinces_url = f"{base_url}/index.html"


def fetch_soup(url):
    response = requests.get(url)
    response.encoding = 'utf-8'  # 需要设置编码
    return BeautifulSoup(response.text, 'html.parser')


def parse_province(province_tag):
    province_name = province_tag.text.strip()
    province_href = province_tag['href']
    province_id = province_href.split('.')[0] + '0000'
    return province_id, province_name, province_href


def parse_city(city_tag):
    tds = city_tag.find_all('td')
    if len(tds) < 2:
        print(f"Unexpected city_tag structure: {city_tag}")
        return None, None, None
    city_id = tds[0].text.strip()[:4] + '00'
    city_name = tds[1].text.strip()
    a_tag = tds[0].find('a')
    city_href = a_tag['href'] if a_tag and 'href' in a_tag.attrs else None
    if not city_href:
        print(f"No href found in city_tag: {city_tag}")
    return city_id, city_name, city_href


def parse_area(area_tag):
    tds = area_tag.find_all('td')
    if len(tds) < 2:
        print(f"Unexpected area_tag structure: {area_tag}")
        return None, None
    area_id = tds[0].text.strip()[:6]
    area_name = tds[1].text.strip()
    return area_id, area_name


def fetch_province_data():
    provinces_data = []
    soup = fetch_soup(provinces_url)
    provinces = soup.find_all('a', href=True)

    for province_tag in provinces:
        province_id, province_name, province_href = parse_province(province_tag)
        print(f"Parsing province: {province_name}")
        province_data = {
            "ssqid": province_id,
            "ssqname": province_name,
            "ssqename": "",
            "city": fetch_city_data(province_href)
        }
        provinces_data.append(province_data)
    return provinces_data


def fetch_city_data(province_href):
    cities_data = []
    province_url = f"{base_url}/{province_href}"
    soup = fetch_soup(province_url)
    city_rows = soup.find_all('tr', class_='citytr')

    for city_tag in city_rows:
        city_id, city_name, city_href = parse_city(city_tag)
        if city_id and city_name and city_href:  # 确保所有值都存在
            print(f"Parsing city: {city_name}")
            city_data = {
                "ssqid": city_id,
                "ssqname": city_name,
                "ssqename": "",
                "area": fetch_area_data(city_href)
            }
            cities_data.append(city_data)
        elif city_id and city_name:
            print(f"Skipping city without href: {city_name}")
            city_data = {
                "ssqid": city_id,
                "ssqname": city_name,
                "ssqename": "",
                "area": []  # 空的area列表
            }
            cities_data.append(city_data)
    return cities_data


def fetch_area_data(city_href):
    areas_data = []
    city_url = f"{base_url}/{city_href}"
    soup = fetch_soup(city_url)
    area_rows = soup.find_all('tr', class_='countytr')

    for area_tag in area_rows:
        area_id, area_name = parse_area(area_tag)
        if area_id and area_name:  # 确保所有值都存在
            print(f"Parsing area: {area_name.encode('utf-8').decode('utf-8')}")
            area_data = {
                "ssqid": area_id,
                "ssqname": area_name,
                "ssqename": ""
            }
            areas_data.append(area_data)
    return areas_data


provinces_data = fetch_province_data()

with open('china_provinces.json', 'w', encoding='utf-8') as f:
    json.dump(provinces_data, f, ensure_ascii=False, indent=4)

print("Data fetched and saved to china_provinces.json")

采集结果如下:

印尼是一个由苏拉威西群岛、小巽他群岛和马鲁古群岛等岛屿组成的国家。印尼的行政区划分为省、市和区。在印尼,省是最高的行政区,下辖若干个市。市是省下属的次级行政区,下辖若干个区。区是市下属的行政级别,一般是以市区为单位进行划分。在印尼的省、市和区的划分上,可以通过JSON文件进行表示和管理。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。在印尼省市区JSON文件中,每个行政区都被表示为一个对象(Object),对象中包含有关该行政区的信息,例如名称、代码和边界等。通过使用JSON文件,我们可以方便地进行数据的读取、存储和处理。 印尼省市区JSON文件可以按层级进行组织,最高层级是省(Province),每个省下面包含若干个市(City),每个市再下面包含若干个区(District)。以此方式,可以将整个省市区的行政划分完整地表示在JSON文件中。 在JSON文件中,可以使用键值对的形式表示每个行政区的信息,例如: { "province": { "name": "雅加达特区", "code": "DKI", "cities": [ { "name": "北雅加达市", "code": "Jakarta Utara", "districts": [ { "name": "坤甸", "code": "Koja" }, { "name": "旺贡", "code": "Cilincing" } ] }, { "name": "南雅加达市", "code": "Jakarta Selatan", "districts": [ { "name": "南贝抓", "code": "Kebayoran Baru" }, { "name": "恭南", "code": "Pancoran" } ] } ] } } 以上是一个简化的示例,展示了印尼雅加达特区下的两个市和各自的区。通过解析和处理这样的JSON文件,我们可以获取并使用印尼省市区的信息,例如查询某个区的名称和代码,或者构建地图等。 总之,印尼省市区JSON文件提供了一种方便有效地管理和使用印尼行政区划信息的方式,可以帮助我们更好地了解和处理印尼的地理和行政信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值