python和爬虫代理的关联

laical · 2020-08-05 17:54:21 · 3284 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2020-08-05 17:54:21 的主题,其中的信息可能已经有所发展或是发生改变。

HTTP就相当于一个传输机制,在甲方和乙方的中间传输自己想要的一种数据。 怎么在python中使用爬虫代理。http代理是爬虫研发中不可缺少的一部分。假如需要大量采集互联网网站上的数据,长时间访问必定网站会出现反爬。为了避免出现这种问题,一般需要把请求分配到其他不同的爬虫程序上。 由于部分公司为了降低成本,就会再互联网网站上采集一些免费的肉鸡代理IP或者购买付费代理去进行采集。 互联网上的免费代理,大家网上随便搜索都能出来一大批,至于网上的免费代理的安全性和可用性,一般的爬虫研发一测试就知道好与坏。假如数据采集中 有部分内容包含 需要登录等的话 还是不要用网上的免费IP。可以自己搭建一个IP池或者购买亿牛云的付费代理 python爬虫使用http代理:

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

总结:无论是什么爬虫,在爬虫过程中http代理很重要。当然如果要高效安全稳定的采集数据,还是需要在网上购买一些付费的亿牛云高匿爬虫代理。


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3284 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传