Python爬取国家统计局行政区划信息
程序员文章站
2022-05-04 18:17:55
...
1. 简介:
2020年统计用区划代码和城乡划分代码,将其中的行政区划爬取并保存成树状结构,以支持类似如下查询:
dic['北京市']['市辖区'].keys()
dict_keys(['东城区', '西城区', '朝阳区', '丰台区', '石景山区', '海淀区', '门头沟区', '房山区', '通州区', '顺义区', '昌平区', '大兴区', '怀柔区', '平谷区', '密云区', '延庆区'])
dic['浙江省'].keys()
dict_keys(['杭州市', '宁波市', '温州市', '嘉兴市', '湖州市', '绍兴市', '金华市', '衢州市', '舟山市', '台州市', '丽水市'])
dic.keys()
dict_keys(['北京市', '天津市', '河北省', '山西省', '内蒙古自治区', '辽宁省', '吉林省', '黑龙江省', '上海市', '江苏省', '浙江省', '安徽省', '福建省', '江西省', '山东省', '河南省', '湖北省', '湖南省', '广东省', '广西壮族自治区', '海南省', '重庆市', '四川省', '贵州省', '云南省', '*自治区', '陕西省', '甘肃省', '青海省', '宁夏回族自治区', '**自治区'])
2. 代码:
import requests
from bs4 import BeautifulSoup
def dfs(url):
# 精确到区级行政单位
if url.count('/') < 9:
response = requests.get(url)
# 解决中文乱码
html_doc = response.content.decode('gbk')
soup = BeautifulSoup(html_doc)
dic = {}
for item in soup.find_all('a'):
# 过滤多余的超链接
if not any(ch.isdigit() for ch in item.text):
dic[item.text] = dfs(url[ : url.rfind('/') + 1] + item.get('href'))
return dic
dic = dfs('http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/index.html')
上一篇: Java多线程---线程、同步
下一篇: Java 多线程同步