国家统计局发布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)对本次程序设计任务完成的情况做一个简单的小结,整个爬虫过程虽然没有什么难度,但是对于新手小白来说还是可以学到很多爬虫的知识,不过还是远远不够的。毕竟数据获取还有很多的更大型,难度更大的网站更值得爬,所以大家都需要继续学习。
若有收获,就点个赞吧







待会儿见
K哥馆
mayun
文鼎_应老师
课课家运营团队
liangchsh
启程软考
