爬虫学习中的一些总结

134 阅读2分钟

在这个时代,数据越来越重要,数据=金钱,已经成为定理。我们在学习掌握使用Python进行数据采集的过程要全面。在掌握知识后运用到实践中我们需要注意很多知识,今天就简单的进行总结下。

1、爬取目标网站,不一定得非用python写爬虫,需要根据实际需求进行选择,例如一些需要用浏览器访问的就可以使用selenium。

2、爬取网站的速度很重要,爬虫速度快,获取的数据量大,节约的成本也多。需要大量采集数据的话,学会使用框架,比如scrapy。

3、一些最简单的反爬措施要熟练,增加User-Agent,获取cookie,加代理ip都是最简单的反爬策略。

这里我们重点讨论下网站的反爬,大部分网站都会需要你的代码有headers的信息,如果没有,会直接拒绝你的访问,这样的情况我们直接加上UA就可以,如果是封ip的加上代理ip就可以。很多小伙伴不会在爬虫程序里面添加代理,今天我们就示例一个最简单使用的代理的使用方式,即动态转发。代理添加部分的demo如下:

 #! -*- 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)

还有很多的注意事项就不一一的列举出来了,大家在实践的过程中去解决,最后关于代理的使用有需求的小伙伴可以咨询这里www.16yun.cn/#banner