当Item在Spider中被收集之后,它将会被传递到Item Pipeline,一些组件会按照一定的顺序执行对Item的处理。

每个item pipeline组件(有时称之为“Item Pipeline”)是实现了简单方法的Python类。他们接收到Item并通过它执行一些行为,同时也决定此Item是否继续通过pipeline,或是被丢弃而不再进行处理。

以下是item pipeline的一些典型应用:

编写你自己的item pipeline

编写你自己的item pipeline很简单,每个item pipeline组件是一个独立的Python类,同时必须实现以下方法:

process_item(selfitemspider)

每个item pipeline组件都需要调用该方法,这个方法必须返回一个 Item (或任何继承类)对象, 或是抛出 DropItem 异常,被丢弃的item将不会被之后的pipeline组件所处理。

参数:

item (Item 对象) – 被爬取的item

spider (Spider 对象) – 爬取该item的spider

open_spider(selfspider)

当spider被开启时,这个方法被调用。

参数:

spider (Spider 对象) – 被开启的spider

close_spider(spider)

当spider被关闭时,这个方法被调用

参数:

spider (Spider 对象) – 被关闭的spider

from_crawler(clscrawler)

If present, this class method is called to create a pipeline instance from a Crawler. It must return a new instance of the pipeline. Crawler object provides access to all Scrapy core components like settings and signals; it is a way for pipeline to access them and hook its functionality into Scrapy.

参数:

crawler (Crawler object) – crawler that uses this pipeline

案例