从国家统计局爬取行政区划数据
程序员文章站
2022-05-04 18:08:30
...
import requests
from bs4 import BeautifulSoup
_main_url = 'http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/'
def create_parser(url, encoding='gbk'):
response = requests.get(url)
response.encoding = encoding
return BeautifulSoup(response.text, "html.parser")
def get_provinces():
bs = create_parser(_main_url)
rows = bs.find_all('tr', 'provincetr')
for row in rows:
for link in row.find_all('a'):
name = link.text
print(name)
get_cities(_main_url + link.attrs['href'])
def get_cities(url):
bs = create_parser(url)
rows = bs.find_all('tr', 'citytr')
for row in rows:
links = row.find_all('a')
if len(links) >= 2:
code = links[0].text
name = links[1].text
print('\t', name, code)
get_counties(_main_url + links[1].attrs['href'])
def get_counties(url):
bs = create_parser(url)
rows = bs.find_all('tr', 'countytr')
for row in rows:
links = row.find_all('a')
if len(links) >= 2:
code = links[0].text
name = links[1].text
print('\t\t', name, code)
if __name__ == '__main__':
get_provinces()
有几点需要注意:
1、国家统计局每年都会更新行政区划数据,2021年的数据还未公布,可以关注这个页面
http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm
2、页面head#meta描述的编码是gb2312,但发现两项异常数据,尝试换用 gbk 解决
鄠邑区 610118000000
埇桥区 341302000000
3、实际使用时,可能摘掉『市辖区』更方便前端使用,某些『市辖区』无链接,编码时需要容错
上一篇: python-docx处理word文档
下一篇: 更新Jar包中的文件