(一)ItemPipeline作用
- 清理html数据
- 验证爬取数据,检查爬取字段
- 查重并丢弃重复内容
- 将爬取结果存储到数据库
(二)核心方法
- process_item(item,spider)
- open_spider(spider)
- close_spider(spider)
- from_crawler(cls,crawler)
1. process_item(item,spider)
- item:Item对象,即被处理的Item
- spider: 是spider对象,即生成该item的spider对象
必须要实现的方法,被定义的ItemPipeline会默认调用这个方法对Item进行处理。
必须返回一个Item或者Dropitem异常
- 返回Item:
此Item会被更低优先级的ItemPipeline对象的process_item方法继续处理,直到所有的方法调用完毕 - 抛出Dropitem异常:
此Item会被丢弃,不再进行处理
2.open_spider(self,spider)
在spider开启时自动调用此方法,做一些初始化操作。比如创建数据库连接
3.close_spider(self,spider)
Spider关闭时自动调用,完成一些收尾工作,比如关闭数据库连接。
4.from_crawler(cls,crawler)
一个类方法,用@classmethod标识,是一种依赖注入的方式。它的参数是crawler,通过crawler对象,我们可以拿到Scrapy的所有核心组件,如全局的配置信息,然后创建一个pipeline实例。参数cls就是一个class,返回一个class的实例