2022-05-10 16:46

国家统计局发布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)

对本次程序设计任务完成的情况做一个简单的小结,整个爬虫过程虽然没有什么难度,但是对于新手小白来说还是可以学到很多爬虫的知识,不过还是远远不够的。毕竟数据获取还有很多的更大型,难度更大的网站更值得爬,所以大家都需要继续学习。


评论