• 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

  • 相关阅读:
    互联网人25岁毕业 拿一万块钱月薪 (转)
    在windows平台编译openAL Android 库
    lua简单包装
    libevent 简单学习
    cocos2dx中使用tolua++使lua调用c++函数
    《OpenGL超级宝典》编程环境配置
    快速排序、归并排序、堆排序三种算法性能比较
    二叉树的三种遍历的递归与非递归算法
    boost之bind
    boost之内存管理
  • 原文地址:https://www.cnblogs.com/cp9648/p/10418700.html
Copyright © 2020-2023  润新知