scrapy框架——下载器中间件(Downloader Middlewares)

一、什么是下载器中间件?

      简单来说,下载器中间件就是引擎和下载器之间通信的中间件。主要目的用来更换请求头、设置代理IP来达到应对网站反爬的情况

      举个例子来说:

1、在我们频繁访问一个页面时,如果请求头一直保持一致,那么就很容易被服务器发现,从而禁止掉这个请求头访问,那么我们就需要设置请求头中间件来应对网站反爬。

2、同样的,我们也可以通过设置 代理IP 来应对网站反爬。

      这就是设置下载器中间件的原因与方法。

二、如何设置下载器中间件?

1.自行定义请求头中间件:

常见的请求头列表网址:

http://www.useragentstring.com/pages/useragentstring.php?typ=Browser

class UserAgentDownloadMiddleware(object):
    USER_AGENTS = [
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',
        'Mozilla/5.0 (X11; Ubuntu; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2919.83 Safari/537.36',
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2866.71 Safari/537.36',
        'Mozilla/5.0 (X11; Ubuntu; Linux i686 on x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2820.59 Safari/537.36',
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv,2.0.1) Gecko/20100101 Firefox/4.0.1',
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2762.73 Safari/537.36'
    ]

    def process_request(self,request,spider):
        user_agent = random.choice(self.USER_AGENTS)
        request.headers['User-Agent'] =user_agent

2.设置代理IP:

  1. 快代理:快代理 - 企业级代理云服务提供商
  2. 蚂蚁代理:​​​​​​​​​​​​​​​​​​​​​蚂蚁代理-最新免费代理ip,高质量代理ip

class IPProxyDownloadMiddleware(object):
     PROXIES = [
        "ip:port"
     ]
     def process_request(self,request,spider):
         proxy = random.choice(self.PROXIES)
         print('被选中的代理:%s' % proxy)
         request.meta['proxy'] =  proxy

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值