利用item pipeline可以实现将数据存入数据库的操作,可以创建一个关于数据库的item pipeline
需要在类属性中定义两个常量
DB_URL:数据库的URL地址
DB_NAME:数据库的名字
在Spider爬取的整个过程中,数据库的连接和关闭操作只需要进行一次就可以,应该在开始处理之前就要连接数据库,并在处理完所有数据之后就关闭数据库。所以需要在open_spider和close_spider中定义数据库的连接和关闭操作
在process_item中实现MongoDB的写入操作,使用self.db和spider.name获得一个集合,然后就是将数据插入到这个集合中,集合对象的insert_one插入的是一个字典对象,不能传入item对象,所以在调用之前要对这个item对象进行判断,如果是item对象就要转成字典
如果要是想通过配置文件来进行配:
增加了类方法from_crawler(cls, cralwer),代替了在类属性中定义的DB_URL,DB_NAME
如果是一个item pipeline定一个from_crawler方法,scrapy就会调用这个方法来创建item pipeline对象。这个方法有两个参数
cls
item pipeline类的对象,这里指的是当前这个item pipeline对象
crawler
Crawler是scrapy中的一个核心的对象,可以通过crawler的settings属性访问配置文件
在from_crawler中,读取配置文件中的MONGO_DB_URL和MONGO_DB_NAME(不存在使用默认值),赋值给cls的属性,也就是当前item pipeline的对象
其它的读取关闭没有发生任何的改变,读取关闭都是正常的操作