scrapy中间件

 

scrapy中间件分下载器中间件和爬虫中间件

下载器中间件(downloader middlewares):主要处理request请求发出去和response响应返回的一些回调。

方法:

  process_request(self,request,spider):

    当request请求经过下载器中间件的时候调用

    返回为None:继续请求

    返回为Request对象,把request对象交给调度器,进行后续请求

    返回为Response对象,不再请求,response交给引擎然后给爬虫

  这个方法可以给request请求增加代理ip,cookie,user-agent,还可以集成selenium,返回HtmlResponse(url,body=,request=,encoding=)

 

  process_response(self,request,response,spider):

    下载器完成http请求,返回responser给引擎时调用

    返回为Request对象,交给调度器继续请求

    返回为Response对象,交给下一个process_response处理

  这个方法,可以进行cookie池的维护,或者对response进行MD5加密,判断页面是否变化

 

  process_exception(request,exception,spider):

    当下载处理区或者process_request抛出异常时,scrapy框架调用process_exception处理,但是不处理process_response抛出的异常,此异常调用requst的errback(Request.errback)处理

    返回为None,调用其他process_exception方法继续处理,直到所有中间件调用完毕,调用默认的异常处理

    返回为Response对象,异常纠正,交给下一个process_response处理

    返回为Request对象,交给调度器继续请求

 

 

爬虫中间件(spider middlewares):处理解析数据(item)的相关逻辑修正,比如数据不完整添加默认、增加其他额外信息。(处理输入response的跨域或robots拦截,输出item或request)

  方法:

  process_spider_input(self,response,spider):

    response通过中间件,该方法调用

    返回None,交给下一个process_spider_input处理

 

  process_spider_output(self,response,result,spider):

    当spider处理response返回reult,该方法调用

    该方法必须返回包含requset或item对象的可迭代对象iterable

  

  process_spider_exception(response,exception,spider):

    当spider或process_spider_input抛出异常时,该方法调用

    返回为None,交给其他process_spider_exception继续处理

    返回一个包含responser或item对象的可迭代对象(iterable),交给其process_spider_output方法

    

   process_start_request(start_request,spider):

    spider启动start_requests() 时调用

    接受一个可迭代对象(start_request参数)且必须返回一个包含Request对象的可迭代对象

  

转载于:https://www.cnblogs.com/zwp-627/p/11295848.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值