国家统计局发布2021年人口数据后,各地近日也陆续发布当地的数据。各省(市、自治区)公布的数据显示,2021年有15个省份常住人口不同程度地减少。这意味着,全国至少有一半省份的人口在减少。这两年在国家在各种宣传二胎,三胎,但是人口数又减少。从各种专家的分析里面看到还有也有分析认为,导致这种局面,诱因可能是疫情,但疫情只是加速了周期,并不是决定性因素,是各种因素导致的结果。
今天我们的主题就是使用python爬虫爬取国家统计局人口数据,然后对获取的的内容与数据进行分析。在爬取过程中需要先针对网站的反爬机制进行研究,基本的像随机ua的添加,cookie的获取,代理IP的添加。代理相对来说比较复杂些,网上虽然有很多的代理商,但是提供的质量都是参差不齐的。很多小伙伴估计都不知道怎么选择了,这里推荐一家靠谱的亿牛云代理。
接下来就是简单的数据获取的代码实现过程:
#! -*- encoding:utf-8 -*- import base64 import sys import random PY3 = sys.version_info[0] >= 3 def base64ify(bytes_or_str): if PY3 and isinstance(bytes_or_str, str): input_bytes = bytes_or_str.encode('utf8') else: input_bytes = bytes_or_str output_bytes = base64.urlsafe_b64encode(input_bytes) if PY3: return output_bytes.decode('ascii') else: return output_bytes class ProxyMiddleware(object): def process_request(self, request, spider): # 代理服务器(产品官网 www.16yun.cn) proxyHost = "t.16yun.cn" proxyPort = "31111" # 代理验证信息 proxyUser = "username" proxyPass = "password" request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort) # 添加验证头 encoded_user_pass = base64ify(proxyUser + ":" + proxyPass) request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass # 设置IP切换头(根据需求) tunnel = random.randint(1,10000) request.headers['Proxy-Tunnel'] = str(tunnel)
对本次程序设计任务完成的情况做一个简单的小结,整个爬虫过程虽然没有什么难度,但是对于新手小白来说还是可以学到很多爬虫的知识,不过还是远远不够的。毕竟数据获取还有很多的更大型,难度更大的网站更值得爬,所以大家都需要继续学习。
若有收获,就点个赞吧