当Item在Spider中被收集之后,它将会被传递到Item Pipeline,一些组件会按照一定的顺序执行对Item的处理。
每个item pipeline组件(有时称之为“Item Pipeline”)是实现了简单方法的Python类。他们接收到Item并通过它执行一些行为,同时也决定此Item是否继续通过pipeline,或是被丢弃而不再进行处理。
以下是item pipeline的一些典型应用:
编写你自己的item pipeline很简单,每个item pipeline组件是一个独立的Python类,同时必须实现以下方法:
process_item
(self, item, spider)
每个item pipeline组件都需要调用该方法,这个方法必须返回一个 Item
(或任何继承类)对象, 或是抛出 DropItem
异常,被丢弃的item将不会被之后的pipeline组件所处理。
参数:
• item (Item
对象) – 被爬取的item
• spider (Spider
对象) – 爬取该item的spider
open_spider
(self, spider)
当spider被开启时,这个方法被调用。
参数:
spider (Spider
对象) – 被开启的spider
close_spider
(spider)
当spider被关闭时,这个方法被调用
参数:
spider (Spider
对象) – 被关闭的spider
from_crawler
(cls, crawler)
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