笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

蜘蛛中间件

发布者: 笨鸟自学网



编写自己的蜘蛛中间件

每个蜘蛛中间件都是一个python类,它定义了下面定义的一个或多个方法。

主要入口点是 from_crawler 类方法,它接收 Crawler 实例。这个 Crawler 例如,对象允许您访问 settings .

classscrapy.spidermiddlewares.SpiderMiddleware
process_spider_input(responsespider)

对于通过蜘蛛中间件进入蜘蛛进行处理的每个响应,都会调用此方法。

process_spider_input() 应该返回 None 或者提出例外。

如果它回来 None ,scrapy将继续处理此响应,执行所有其他中间软件,直到最后将响应提交给spider进行处理。

如果它引发了一个异常,那么Scrapy就不会麻烦调用任何其他的蜘蛛中间件了。 process_spider_input() 如果有请求,将调用errback,否则将启动 process_spider_exception() 链条。errback的输出被链接回另一个方向 process_spider_output() 处理,或 process_spider_exception() 如果它引发了一个异常。

参数
  • response (Response object) -- 正在处理的响应

  • spider (Spider object) -- 此响应所针对的蜘蛛

process_spider_output(responseresultspider)

在处理完响应后,调用此方法,并返回蜘蛛返回的结果。

process_spider_output() 必须返回一个可迭代的 Request 对象和 item object 

参数
  • response (Response object) -- 从spider生成此输出的响应

  • result (an iterable of Request objects and item object) -- 蜘蛛返回的结果

  • spider (Spider object) -- 正在处理结果的蜘蛛

process_spider_exception(responseexceptionspider)

当蜘蛛或 process_spider_output() 方法(来自以前的蜘蛛中间件)引发异常。

process_spider_exception() 应该返回 None 或可迭代的 Request 或 item 对象。

如果它回来 None ,Scrapy将继续处理此异常,执行任何其他 process_spider_exception() 在下面的中间件组件中,直到没有中间件组件离开并且异常到达引擎(在那里记录并丢弃它)。

如果它返回一个不可数 process_spider_output() 管道启动,从下一个蜘蛛中间件开始,没有其他 process_spider_exception() 将被调用。

参数
  • response (Response object) -- 引发异常时正在处理的响应

  • exception (Exception object) -- 引发的异常

  • spider (Spider object) -- 引发异常的蜘蛛

process_start_requests(start_requestsspider)

这个方法是用spider的start请求调用的,其工作原理与 process_spider_output() 方法,但它没有关联的响应,必须只返回请求(而不是项)。

它接收一个可迭代的(在 start_requests 参数),并且必须返回另一个可迭代的 Request 对象。

注解

在您的蜘蛛中间件中实现此方法时,您应该始终返回一个ITerable(跟随输入的ITerable),而不是全部消费。 start_requests 迭代器,因为它可能非常大(甚至没有边界),并导致内存溢出。scrappy引擎设计用于在有能力处理启动请求的情况下提取它们,因此,如果存在停止spider的其他条件(如时间限制或项目/页面计数),则启动请求迭代器实际上可以是无止境的。

参数
  • start_requests (an iterable of Request) -- 启动请求

  • spider (Spider object) -- 启动请求所属的蜘蛛

from_crawler(clscrawler)

如果存在,则调用该类方法从 Crawler . 它必须返回中间件的新实例。爬虫对象提供对所有零碎核心组件(如设置和信号)的访问;它是中间件访问它们并将其功能连接到零碎的一种方式。

参数

crawler (Crawler object) -- 使用此中间件的爬虫程序


上一篇:下载器中间件下一篇:扩展

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-11-21 20:49 , Processed in 0.026932 second(s), 17 queries .

© 2001-2020

返回顶部