前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2021年度全国统计用区划代码和城乡划数据抓取

2021年度全国统计用区划代码和城乡划数据抓取

作者头像
SingYi
发布2022-07-13 20:20:02
4940
发布2022-07-13 20:20:02
举报
文章被收录于专栏:Lan小站

2021年中国省份及城市及街道数据抓取(未包括我国台湾省、香港特别行政区和澳门特别行政区)

效果图
效果图
代码语言:javascript
复制
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
@ Author :Lan
@ Blog :www.lanol.cn
@ Date : 2022/1/12
@ Description:I'm in charge of my Code
-------------------------------------------------
"""
import time

import requests
import parsel

base_url = 'http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2021/'
provinceText = requests.get(base_url + 'index.html')
provinceText.encoding = 'utf-8'
provinceHtml = parsel.Selector(provinceText.text)
china = {}
# 获取所有省份,并进行遍历
for province in provinceHtml.xpath('//td/a'):
    provinceName = province.xpath('text()').extract_first()
    print(provinceName)
    china[provinceName] = {}
    provinceUrl = base_url + province.xpath('@href').extract_first().replace('.html', '/')
    cityText = requests.get(base_url + province.xpath('@href').extract_first())
    cityText.encoding = 'utf-8'
    cityHtml = parsel.Selector(cityText.text)
    # 获取省份下的市
    for city in cityHtml.xpath("//tr[@class='citytr']/td[2]"):
        cityName = city.xpath('a/text()').extract_first()
        print(provinceName, cityName)
        china[provinceName][cityName] = {}
        countyText = requests.get(base_url + city.xpath('a/@href').extract_first())
        countyText.encoding = 'utf-8'
        countyHtml = parsel.Selector(countyText.text)
        # 获取市区下的区
        for county in countyHtml.xpath("//tr[@class='countytr']/td[2]//*"):
            countyName = county.xpath('text()').extract_first()
            print(provinceName, cityName, countyName)
            china[provinceName][cityName][countyName] = {}
            townUrl = provinceUrl + county.xpath('@href').extract_first() if county.xpath('@href') else None
            if townUrl:
                try:
                    townText = requests.get(townUrl, timeout=2)
                except:
                    townText = requests.get(townUrl, timeout=2)
                townText.encoding = 'utf-8'
                townHtml = parsel.Selector(townText.text)
                # 获取区下面的镇
                towns = townHtml.xpath("//tr[@class='towntr']/td[2]//text()").extract()
                print(provinceName, cityName, countyName, towns)
                china[provinceName][cityName][countyName] = towns
print(china)

点击查看数据

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档