解決Scrapy框架在寫入MongoDB數據庫時出現KeyError: 'xxx does not support field: _id'的幾種方法

如果幫到你的話,請點個贊

一:將item變爲字典,而且scrapy添加字典用語句insert_one

錯誤代碼:

    def process_item(self, item, spider):
        name = item.__class__.__name__
        if item:
            self.db[name].insert_one(item) # 保存數據
            print("插入數據{}到Mongo成功".format(item))
            return item

正確寫法:

    def process_item(self, item, spider):
        name = item.__class__.__name__
        if item:
            self.db[name].insert_one(dict(item)) # 保存數據
            print("插入數據{}到Mongo成功".format(item))
            return item

 

二:在items中添加_id = iscrapy.Field()

添加完以後在spider裏添加以下代碼,還得引入random模塊(爲了賦予id值,而不是什麼內存區號),即在文件開頭寫上 import random

item['_id'] = str(random.randint(1,100000))

三:注意在spider.py中yield的縮進

yield item一定要跟循環完的語句保持一致,即賦值完一組以後,馬上緊跟着yield item
    def parse_page(self,response):
        item = ParkItem()
        item['name'] =
        item['area']= 
        yield item  #生成item的當前字典以後傳送數據到pipelines進而保存到數據庫


        

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章