在pipeline中 写入如下:
import pymongo
class DBDYMongoPipeline(object):
collection = 'dbdys' #表的名字
def __init__(self, mongo_uri, mongo_db):
self.mongo_uri = mongo_uri
self.mongo_db = mongo_db
@classmethod
def from_crawler(cls, crawler):
'''
scrapy为我们访问settings提供了这样的一个方法,这里,
我们需要从settings.py文件中,取得数据库的URI和数据库名称
'''
return cls(
mongo_uri = crawler.settings.get('MONGO_URI'),
mongo_db = crawler.settings.get('MONGO_DB')
)
def open_spider(self, spider):
'''
爬虫一旦开启,就会实现这个方法,连接到数据库
'''
self.client = pymongo.MongoClient(self.mongo_uri)
self.db = self.client[self.mongo_db]
def close_spider(self, spider):
'''
爬虫一旦关闭,就会实现这个方法,关闭数据库连接
'''
self.client.close()
def process_item(self, item, spider):
'''
每个实现保存的类里面必须都要有这个方法,且名字固定,用来具体实现怎么保存
'''
if not item['title']:
return item
data={
'title':item['title'],
'star':item['star'],
'doc':item['doc'],
'link':item['link'],
'intro':item['intro'],
}
table = self.db[self.collection]
table.insert_one(data)
return item
在setting文件中配置:
ITEM_PIPELINES = {
'DBDY.pipelines.DbdyPipeline': 300,
#项目文件名,管道中定义是的管道类 名称
'DBDY.pipelines.DBDYMongoPipeline':400
}
MONGO_URI = 'mongodb://localhost:27017'
MONGO_DB = "stu" #数据库名字