欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

 

相关标签: python 爬虫