python爬虫练习五(补充): 2018年统计用区划代码和城乡划分代码(附代码与全部数据)
程序员文章站
2022-05-04 16:40:19
...
之前爬取过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即可正常执行。
最后,附上全部2017年统计用区划代码和城乡划分代码(截止2017年10月31日)数据,链接如下。
有积分的给点~: https://download.csdn.net/download/weixin_41710905/11037573
没积分的网盘 链接: https://pan.baidu.com/s/1Or6yfKzDvccpuEUBSs7Oag 提取码:p6i9
如果代码、数据有问题,还请多多指正!
上一篇: 数据类型的简单应用
下一篇: python爬取喜马拉雅音频数据