两个中间件都可以处理请求和响应。但有什么区别?
答案 0 :(得分:13)
虽然它们具有几乎相同的界面,但它们有不同的用途:
下载中间件修改请求和响应或生成响应响应的请求。它们不直接与蜘蛛相互作用。一些示例是实现cookie,缓存,代理,重定向,设置用户代理标头等的中间件。它们只是向下载器系统添加功能。
Spider中间件修改传入和传出蜘蛛的内容,如请求,项目,例外和start_requests
。它们与下载中间件共享一些基本功能,但它们无法响应响应生成请求。他们站在蜘蛛和下载器之间。一个例子是过滤掉带有错误HTTP状态代码的响应。
某些中间件可以作为下载中间件或蜘蛛中间件,但它们通常是微不足道的,一旦添加了更复杂的功能,它们就会被强制进入一个类别或另一个类别。