爬虫蜘蛛Scrapy编写自己的下载中间件DOWNLOADER_MIDDLEWARES(57)python Scrapy教程1.51以上版本
每个中间件组件都是一个Python类,它定义了以下一个或多个方法:
- class
scrapy.downloadermiddlewares.DownloaderMiddleware -
注意
任何下载器中间件方法也可能返回延迟。
requestprocess_request(spider,)- 对于通过下载中间件的每个请求,都会调用此方法。
process_request()应该:返回None,返回一个Response对象,返回一个Request对象,或者提升IgnoreRequest。如果它返回
None,Scrapy将继续处理此请求,执行所有其他中间件,直到最后,相应的下载程序处理程序被称为执行的请求(并且其响应已下载)。如果它返回一个
Response对象,Scrapy将不会打扰任何其他process_request()或process_exception()方法,或适当的下载功能; 它会回复那个回应。process_response()安装中间件的方法总是在每个响应上调用。如果它返回一个
Request对象,Scrapy将停止调用process_request方法并重新安排返回的请求。执行新返回的请求后,将在下载的响应上调用相应的中间件链。如果它引发
IgnoreRequest异常,将process_exception()调用已安装的下载中间件的 方法。如果它们都不处理异常,Request.errback则调用request()的errback函数。如果没有代码处理引发的异常,则会忽略它并且不会记录(与其他异常不同)。参数:
requestprocess_response(response,spider,)process_response()应该:返回一个Response对象,返回一个Request对象或引发一个IgnoreRequest异常。如果它返回a
Response(它可能是相同的给定响应,或者是全新的响应),则该响应将继续与process_response()链中的下一个中间件一起处理。如果它返回一个
Request对象,则暂停中间件链,并重新安排返回的请求以便将来下载。这与从中返回请求的行为相同process_request()。如果它引发
IgnoreRequest异常,Request.errback则调用request()的errback函数。如果没有代码处理引发的异常,则会忽略它并且不会记录(与其他异常不同)。参数:
requestprocess_exception(exception,spider,)process_exception()下载处理程序或process_request()(从下载中间件)引发异常(包括IgnoreRequest异常)时Scrapy调用process_exception()应该返回:要么None,一个Response对象或Request对象。如果它返回
None,Scrapy将继续处理此异常,执行任何其他process_exception()已安装的中间件方法,直到没有剩下中间件并且默认异常处理开始。如果它返回一个
Response对象,process_response()则启动已安装的中间件的方法链,并且Scrapy不会打扰调用任何其他process_exception()中间件方法。如果它返回一个
Request对象,则重新安排返回的请求以便将来下载。这会停止执行process_exception()中间件的方法,就像返回响应一样。参数: - request(is a
Requestobject) – 生成异常的请求 - exception(an
Exceptionobject) – 引发的异常 - spider(
Spiderobject) – 此请求所针对的蜘蛛
- request(is a
clsfrom_crawler(crawler,)- 如果存在,则调用此类方法以从a创建中间件实例
Crawler。它必须返回一个新的中间件实例。Crawler对象提供对所有Scrapy核心组件的访问,如设置和信号; 它是中间件访问它们并将其功能挂钩到Scrapy的一种方式。参数: crawler( Crawlerobject) – 使用此中间件的爬网程序
评论被关闭。