python爬取2017年统计用区划代码和城乡划分代码(截止2017年10月31日)

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()

猜你喜欢

转载自blog.csdn.net/a35155/article/details/81324872