首页 > 解决方案 > 使用 pymongo 在 MongoDB 中插入文档

问题描述

我第一次使用 Python 来运行爬虫。我已经让爬虫工作了,现在我想使用 pymongo 将结果保存在我的 MongoDB 中,但由于某种原因,我收到此错误:“NameError: name 'city' is not defined”。如果我将 city 用引号括起来,它会按预期工作,但我想按原样保存它。任何人都做过类似的事情或知道解决方案是什么?

def gotHolidays(self, response):
        cityName = response.meta['name']
        feriado = []
        facult = []
        for selector in response.css("span.one"):
            feriado.append(selector.css("::text").extract())

        for selector in response.css("span.two"):
            facult.append(selector.css("::text").extract())

        city = {
            'city': cityName,
            'holidays':{
                'facult': facult,
                'feriado': feriado                
            }
        }
        print(json.dumps(city))

    from pymongo import MongoClient
    client = MongoClient()
    client = MongoClient ('localhost', 27017)
    db = client['myBank']
    myCollection = db.myCollection
    myCollection_data = {
        'cities': city
    }
    result = myCollection.insert_one (myCollection_data)

标签: pythonmongodb

解决方案


您的代码片段中的缩进看起来错误。该行from pymongo import ...应与前一行处于相同的缩进级别:

        print(json.dumps(city))

        from pymongo import MongoClient
        client = MongoClient()

对于 python,缩进定义了范围。取消缩进的代码被 python 解释为“函数的结尾”。因此,当您尝试访问“城市”变量时,它不再在范围内


推荐阅读