python - 使用 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)
解决方案
您的代码片段中的缩进看起来错误。该行from pymongo import ...
应与前一行处于相同的缩进级别:
print(json.dumps(city))
from pymongo import MongoClient
client = MongoClient()
对于 python,缩进定义了范围。取消缩进的代码被 python 解释为“函数的结尾”。因此,当您尝试访问“城市”变量时,它不再在范围内
推荐阅读
- javascript - 如何向 JavaScript MouseEvent 添加附加信息,例如 relativeClientX 属性?
- r - 我可以忽略函数求和部分中的缺失变量吗?
- html - 图像被切断,我无法定位它
- c# - 从 C# redis 扫描获取实际值
- swift - 如何在 SwiftUI 中的特定时间循环播放背景音乐
- python - 我需要什么范围和权限才能让别人从我的 Google 云端硬盘下载文件?
- python - 使用索引列表拆分列表
- python - 使用 xlrd 引擎在 xls 文件上调用 pands read_excel 时出现 AssertionError
- javascript - 时刻不计算天数正确,还是我错了?(我是但为什么)
- r - 对具有多列的两个数据框列表执行多个两个样本 t 检验