Scrapy将数据保存到mongoDB TypeError:列表索引必须是整数或切片,而不是str

时间:2018-04-08 07:27:55

标签: python mongodb scrapy

我是Python / Scrapy的新手,面临TypeError问题。我想将抓取器解析数据作为对象存储到MongoDB。这是我的代码。

alertentry = {'website': host, '_id': doc['_id'], 'event': 'website_up', 'alert_id': '',
                       'main_website_id': doc['main_website_id']}
Alerts.add(alertentry, 'Website Up:' + doc[0]['website_url'], 2)

从上面的代码我得到" alertentry = {'网站':主持人,' _id':doc [' _id'],' event':'' ; website_up',' alert_id':'', TypeError:list indices必须是整数或切片,而不是str "

如果将alertentry更改为如下所示,我收到同样的错误。

alertentry = [host, doc['_id'], 'website_up', '', doc['main_website_id']]
Alerts.add(alertentry, 'Website Up:' + doc[0]['website_url'], 2)

我也尝试过:

alertentry = [self.host, self.doc['_id'], 'website_up', '', self.doc['main_website_id']]

但没有运气。 这里Alerts.add()函数将数据插入MongoDB。 我在Python 3.5中使用Scrapy 1.5。 请有人帮帮我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您收到此错误,因为'doc'的类型是数组,而不是字典。所以你应该以这种形式获得doc ['_ id']

doc[0]['_id']

或者您可以循环使用文档。