zoukankan      html  css  js  c++  java
  • scrapy框架使用-下载中间件,在下载中间件里面,添加随机UA,添加随机代理ip,这个很重要

    ####

    下载中间件的用途

      

    这个下载中间件,有两个用途,一个处理请求,一个处理响应

    ###

    下载中间件-----添加随机UA,

    ####

    在setting里面设置一个随机ua的列表,

    ####

     ###

    注意一定要实现这个process_request方法,这个是在请求之前加一些处理,

    如果是实现的process_response方法,就是在请求之后增加了一些东西,

    这个下载中间件,就是实现了一个随机选择useragent的作用,可以起到一定的反爬的效果,

    ####

    下载中间件------添加随机代理IP,

    ###

    这个下载中间件,也可以使用加代理的方式,这个注意是加在meta里面的,如果我们是使用的第三方的代理,可能会有用户名,密码,需要额外加密处理,这个不常用,

    在setting中设置,

    一.手动更新ip池
    1.1在setting配置文件中新增ip池

    PROXIES = [
    {‘ip_port’: ‘61.160.233.8’, ‘user_pass’: ”},
    {‘ip_port’: ‘125.93.149.186’, ‘user_pass’: ”},
    {‘ip_port’: ‘58.38.86.181’, ‘user_pass’: ”},
    {‘ip_port’: ‘119.142.86.110’, ‘user_pass’: ”},
    {‘ip_port’: ‘124.161.16.89’, ‘user_pass’: ”},
    {‘ip_port’: ‘61.160.233.8’, ‘user_pass’: ”},
    {‘ip_port’: ‘101.94.131.237’, ‘user_pass’: ”},
    {‘ip_port’: ‘219.157.162.97’, ‘user_pass’: ”},
    {‘ip_port’: ‘61.152.89.18’, ‘user_pass’: ”},
    {‘ip_port’: ‘139.224.132.192’, ‘user_pass’: ”}


    这些IP可以从这个几个网站获取:快代理、代理66、有代理、西刺代理、guobanjia。如果出现像下面这种提示:“由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败”或者是这种,” 由 于目标计算机积极拒绝,无法连接。”. 那就是IP的问题,更换就行了。。。。发现上面好多IP都不能用。。

    ###

    代码:

    import random
    import base64from youx.settings import PROXIES  
    
    class ProxyMiddleware(object):
      def process_request(self, request, spider):
          proxy = random.choice(PROXIES)
          if proxy['user_pass'] is not None:
              request.meta['proxy'] = "http://%s" % proxy['ip_port']
              encoded_user_pass = base64.encodestring(proxy['user_pass'])
              request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass
          else:
              request.meta['proxy'] = "http://%s" % proxy['ip_port']

    ###

    ####

    注意这种可能需要输入密码的操作,还是要注意的,要特殊处理,

    注意,记住要把这个中间件添加到这个setting设置里面,

    体会这种用法的思想,代码片段只做参考,不一定能拿来就用,

    ####

    #####

  • 相关阅读:
    Auty 2017——WebMonitor接口线上检测平台
    Auty 2017——WebMonitor接口本地检测平台
    Python+webdriver爬取博客园“我的闪存”并保存到本地
    Python爬网获取全国各地律师电话号
    Python Locust对指定网站“一键压测”
    12306提前查北京到长春的春运火车票
    PowerShell添加或修改注册表开机启动项脚本
    网易测试分享会——“一起打造你想要的QA团队”
    【分布式】2、分布式资料收集
    【Java并发编程】13、forkjoin
  • 原文地址:https://www.cnblogs.com/andy0816/p/15059107.html
Copyright © 2011-2022 走看看