Python爬虫学习笔记 2-3:Scrapy中间件

Published On 2019/12/25 Wedesday, Singapore

上一节我们讲解scrapy的项目管道的使用, 这一节介绍中间件的使用。

本文为Datacatsle Python爬虫(入门+进阶)课程学习笔记。

Scrapy框架中的中间件主要分两类:蜘蛛中间件和下载中间件。 蜘蛛中间件是介入到Scrapy的spider处理机制的钩子框架,可以添加代码来处理发送给 Spiders 的response及spider产生的item和request。当蜘蛛传递请求和items给引擎的过程中,蜘蛛中间件可以对其进行处理(过滤出 URL 长度比 URLLENGTH_LIMIT 的 request。)当引擎传递响应给蜘蛛的过程中,蜘蛛中间件可以对响应进行过滤(例如过滤出所有失败(错误)的 HTTP response)

下载中间件是处于引擎(Engine)和下载器(Downloader)之间的一层组件,可以有多个下载中间件被加载运行。当引擎传递请求给下载器的过程中,下载中间件可以对请求进行处理 (例如增加http header信息,增加proxy信息等);在下载器完成http请求,传递响应给引擎的过程中, 下载中间件可以对响应进行处理(例如进行gzip的解压等)




下载中间件的主要函数

process_request(request, spider): 当每个request通过下载中间件时,该方法被调用。需要传入的参数为:

其必须返回其中之一:

process_response(request, response, spider): 当下载器完成http请求,传递response给引擎的时候,该方法被调用。需要传入的参数为:

其必须返回其中之一:

process_exception(request, exception, spider):当下载处理器(download handler)或 process_request() (下载中间件)抛出异常(包括 IgnoreRequest 异常)时, Scrapy调用 process_exception()函数处理,但不处理process_response返回的异常。

需要传入的参数为:

其必须返回其中之一:





💚 Back to Home