python爬取2017年统计用区划代码和城乡划分代码(截止2017年10月31日)
程序员文章站
2022-05-04 18:51:13
...
2017年统计用区划代码和城乡划分代码(截止2017年10月31日) | |||||||
统计用区划代码和城乡划分代码发布说明: 一、编制依据 2008年7月,国务院批复同意国家统计局与民政部、住建部、*部、财政部、国土部、农业部共同制定的《关于统计上划分城乡的规定》(国函〔2008〕60号),自2008年8月1日实施,正式奠定了统计上划分城乡的理论依据和方法基础。随后,国家统计局印发《统计用区划代码和城乡划分代码编制规则》(国统字〔2009〕91号)。 二、区划范围 统计用区划代码和城乡划分代码的区划范围,是国家统计局开展统计调查的区划范围。未包括我国*省、香港特别行政区、澳门特别行政区。 三、发布内容 12位统计用区划代码和3位城乡分类代码。 四、适用领域 《国务院关于统计上划分城乡规定的批复》(国函〔2008〕60号)明确指出:“本规定作为统计上划分城乡的依据,不改变现有的行政区划、隶属关系、管理权限和机构编制,以及土地规划、城乡规划等有关规定”。各级各部门在使用统计用区划代码和城乡划分代码时,请务必结合实际情况。 五、补充编制开发区统计汇总识别码情况 为满足统计调查工作组织和数据汇总的需要,国家统计局对一些符合条件的开发区编制了统计汇总识别码。统计汇总识别码在统计用区划代码的县级码段上编制,其码段为71~80。 编制统计汇总识别码的开发区应同时满足以下四个条件:一是国家和省人民*正式批准成立的开发区;二是开发区的管理等同于县级人民*,行使县级人民*的管理职能,即管理开发区内的社会公共事务;三是开发区至少管理一个乡级单位;四是开发区管委会成立并运作两年及以上。 |
import requests
from lxml import etree
from time import sleep
class Spider():
def __init__(self):
self.province = ''
self.province_code = ''
self.city = ''
self.city_code = ''
self.district = ''
self.district_code = ''
self.city_url = ''
self.district_url = ''
self.url = 'http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2017/index.html'
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'
}
def get_province(self):
sleep(0.5)
rep = requests.get(url=self.url, headers=self.headers)
html = rep.content
html = etree.HTML(html)
province_url = html.xpath('//tr[@class="provincetr"]/td//a/@href')
province_name = html.xpath('//tr[@class="provincetr"]/td//a/text()')
for i in range(len(province_name)):
province_code = province_url[i][:2]
self.province = province_name[i]
self.province_code = province_code
self.city_url = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2017/" + province_code + '.html'
self.get_city()
def get_city(self):
sleep(0.2)
rep = requests.get(url=self.city_url, headers=self.headers)
html = rep.content
html = etree.HTML(html)
city_data = html.xpath('//tr[@class="citytr"]/td//a/text()')
city = city_data[1::2]
city_code = city_data[::2]
for i in range(len(city_code)):
city_code_s = city_code[i][:4]
self.city = city[i]
self.city_code = city_code_s
self.district_url = self.city_url[:-5] + '/' + city_code_s + '.html'
self.get_district()
def get_district(self):
sleep(0.1)
rep = requests.get(url=self.district_url, headers=self.headers)
html = rep.content
html = etree.HTML(html)
district_data = html.xpath('//tr[@class="countytr"]/td//a/text()')
district = district_data[1::2]
district_code = district_data[::2]
for i in range(len(district)):
self.district = district[i]
self.district_code = district_code[i][:6]
print(self.district)
print(self.district_code)
self.write_data()
def write_data(self):
data = self.province + ',' + self.province_code + ',' + self.city + ',' + self.city_code + ',' + self.district + ',' + self.district_code + ',' + '\n'
with open('data.txt', 'a', encoding='utf8') as f:
f.write(data)
if __name__ == '__main__':
spider = Spider()
spider.get_province()