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和输出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对象的可迭代对象
上一篇: Python学习日记(八) 函数
推荐阅读
-
Nodejs中Express 常用中间件 body-parser 实现解析
-
从django的中间件直接返回请求的方法
-
图文详解python安装Scrapy框架步骤
-
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
-
Linux系统:centos7下搭建ZooKeeper3.4中间件,常用命令总结
-
浅谈Scrapy网络爬虫框架的工作原理和数据采集
-
node.js中express中间件body-parser的介绍与用法详解
-
简单介绍react redux的中间件的使用
-
Laravel5.1 框架Middleware中间件基本用法实例分析
-
Python scrapy 常见问题及解决 【遇到的坑】