python爬虫练习五(补充): 2018年统计用区划代码和城乡划分代码(附代码与全部数据)

之前爬取过2017年的数据 详见

Python爬虫练习五:爬取 2017年统计用区划代码和城乡划分代码(附代码与全部数据)

,下面有评论说广东省的数据缺少了东莞与中山两个市的数据,检查网页结构发现确实是代码没考虑到,这两个市没有区级,直接到街道、办事处级了。考虑到代码的复用性、以及唯独此两个市的特殊性,(其实是懒),在源码不变的情况下,添加以下代码处理此两市的数据。

在Spiders.py 下 添加以下函数

def getfourth_special(lists):
    town = {}
    for i in lists:
        # print(url+i[0:2]+'/'+i[2:4]+'/'+i+'.html')
        soup = getsoup(i)
        for j in soup.select('.towntr '):
            # print(j)
            id = str(j.select('td')[0].text)  # 130202001000
            town[id[0:9]] = {'qhdm': id, 'name': j.select('td')[1].text, 'cxfldm': '0'}# 130202001
    return town

def getfifth_special(url,lists):
    village = {}
    for i in lists:
        soup = getsoup(url+i[0:2]+'/'+i[2:4]+'/'+i+'.html')
        for j in soup.select('.villagetr '):
            # print(j)
            id = str(j.select('td')[0].text)  # 110101001001
            village[id[0:12]] = {'qhdm': id, 'name': j.select('td')[2].text, 'cxfldm': j.select('td')[1].text}# 110101001001
    return village

新建special_html.py,程序代码如下:

import Spiders

aimurl="http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/"
city=['http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/44/4419.html',
          'http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2018/44/4420.html']

town = Spiders.getfourth_special(city)
village = Spiders.getfifth_special(aimurl, town)
print(village)
path = r'E:\tjyqhdmhcxhfdm2018\tjyqhdmhcxhfdm2018_' + 'special' + '.txt'
dic = { **town, **village}#字典合并
for i in dic.values():
    with open(path, 'a', encoding='utf-8') as f:
        f.write('"' + i['qhdm'] + '","' + i['name'] + '","' + i['cxfldm'] + '"' + '\n')
print(" write finished!")

执行special_html.py即可得到两市的结果,补进44文档。

注意:如果要爬取最新的统计用区划代码和城乡划分代码,请参照 python爬虫练习五 ,将源码中的2017替换为2018即可正常执行。

  最后,附上全部2018年统计用区划代码和城乡划分代码(截止2018年10月31日)数据,链接如下。

 有积分的给点~: https://download.csdn.net/download/weixin_41710905/11037573

  没积分的网盘 链接:  https://pan.baidu.com/s/1Or6yfKzDvccpuEUBSs7Oag  提取码:p6i9 
 

如果代码、数据有问题,还请多多指正!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值