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的主要内容,如果未能解决你的问题,请参考以下文章

scrapy主动退出爬虫的代码片段(python3)

scrapy按顺序启动多个爬虫代码片段(python3)

Python3爬虫Scrapy+MongoDB+MySQL

Scrapy学习第五课

运维学python之爬虫高级篇scrapy爬取知乎关注用户存入mongodb

利用scrapy抓取网易新闻并将其存储在mongoDB