zoukankan      html  css  js  c++  java
  • scrapy保存数据到mongodb

    修改配置文件settings.py添加

    ITEM_PIPELINES = {
       # 'tutorial.pipelines.QQNewsPipeline': 300,
       'tutorial.pipelines.QQNewsMongoPipeline':400
    }
    MONGO_URI = 'mongodb://localhost:27017'
    MONGO_DB = "qqNews"

    修改pipelines.py添加

    class QQNewsMongoPipeline(object):
        collection = 'military_affairs'
        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'][0],
                'content':item['content']
            }
            table = self.db[self.collection]
            table.insert_one(data)
            return item

  • 相关阅读:
    3--OC -- 点语法
    2--OC -- 类的创建与实例化
    1--OC -- HelloWorld
    tags,模板继承,组件,静态文件设置
    Django-过滤器的参数和语法
    Django- filter和simpletag,inclusion_tag的用法
    DjangoORM属性操作和models创建类语法
    Django项目的基础配置
    网络编程
    面试题
  • 原文地址:https://www.cnblogs.com/cp9648/p/10418700.html
Copyright © 2011-2022 走看看