在scrapy的pipelines中連接數(shù)據(jù)庫

在scrapy項目中的settings.py中設(shè)置

#連接mongo
MONGODB_HOST = '127.0.0.1'
MONGODB_PORT = 27017
MONGODB_DBNAME = 'data'
MONGODB_DOCNAME = 'chinadata'
ITEM_PIPELINES = {
   # 'chinaico.pipelines.ChinaicoPipeline': 300,
   'chinaico.pipelines.RedisPipeline':301,
   'chinaico.pipelines.MongoPipeline':301,
}

在scrapy項目中的pipelines.py中設(shè)置

import json
import redis
import pymongo
from pymongo import MongoClient
from  scrapy.conf import settings
import datetime

class ChinaicoPipeline(object):
    def process_item(self, item, spider):
        return item

class RedisPipeline(object):
    def __init__(self):
        self.r = redis.StrictRedis(host='127.0.0.1',password='', port=6379, db=3)


    def process_item(self, item, spider):
        self.r.sadd("webchinadata", json.dumps(dict(item),ensure_ascii=False))
        return item


class MongoPipeline(object):

    def __init__(self):    
        host = settings['MONGODB_HOST']
        port = settings['MONGODB_PORT']
        db_name = settings['MONGODB_DBNAME']
        client = pymongo.MongoClient(host=host, port=port)
        db = client[db_name]
        self.post = db[settings['MONGODB_DOCNAME']]
      
    def process_item(self, item, spider):
        china_data = dict(item)
        self.post.insert(china_data,"time":datetime.datetime.now())插入數(shù)據(jù)
        self.post.update({"name":item["name"]},{"$set":china_data},upsert = True)
更新數(shù)據(jù)
        return item

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容