scrapy连接MongoDB

Posted 在白底黑字中读懂自己

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scrapy连接MongoDB相关的知识,希望对你有一定的参考价值。

Scrapy中连接MongoDB所需要做的工作如下:

1.settings中需要设置的部分:

# 启动管道组件
ITEM_PIPELINES = {
    QianChengWuYu.mongoDBPiplelines.MongoDBPipline: 300,
}
# MonDB的连接参数
MONGODB_URI = mongodb://localhost:27017
MONGODB_DB_NAME = scrapy_db

     (1)其中ITEM_PIPELINES中设置的是QianChengWuyu项目中的管道文件mongoDBPiplelines中的MongoDBPipline类,优先级是300

     (2)其中MONGODB_URI为指定登录的IP 这里是localhost,端口为27017,MONGODB_DB_NAME为MongoDB中数据库名称

 

2.scrapy中piplines文件如下:

 

"""
该类用于mongdb数据库的数据插入
"""

from pymongo import MongoClient
from scrapy import Item

class MongoDBPipline(object):
    def open_spider(self, spider):
        """
        该方法用于连接数据库
        """
        db_uri = spider.settings.get(MONGODB_URI, mongodb://localhost:27017)
        db_name = spider.settings.get(MONGODB_DB_NAME, scrapy_default)

        self.db_client = MongoClient(mongodb://localhost:27017)
        self.db = self.db_client[db_name]

    def close_spider(self, spider):
        """
        该方法用于关闭数据库
        """
        self.db_client.close()

    def process_item(self, item, spider):
        """
        该方法用于插入数据
        """
        self.insert_db(item)

        return item

    def insert_db(self, item):
        if isinstance(item, Item):
            item = dict(item)     # 将一项数据转化为字典格式

        self.db.books.insert_one(item)  # 向集合books中插入数据

 

以上是关于scrapy连接MongoDB的主要内容,如果未能解决你的问题,请参考以下文章