scrapy不将数据导出到弹性搜索

时间:2015-06-23 10:21:33

标签: search scrapy elasticsearch

我想在ElasticSearch中索引我的项目,我找到了this

但如果我试图抓取某个网站,我会收到以下错误:

  

文件" /usr/lib/python2.7/dist-packages/twisted/internet/defer.py",第577行,在_runCallbacks中               current.result = callback(current.result,* args,** kw)             文件" /usr/local/lib/python2.7/dist-packages/scrapyelasticsearch/scrapyelasticsearch.py​​",第70行,在process_item中               self.index_item(项目)             文件" /usr/local/lib/python2.7/dist-packages/scrapyelasticsearch/scrapyelasticsearch.py​​",第52行,在index_item中               local_id = hashlib.sha1(item [uniq_key])。hexdigest()             文件" /home/javed/.local/lib/python2.7/site-packages/scrapy/item.py",第50行, getitem               return self._values [key]           exceptions.KeyError:' url'

2 个答案:

答案 0 :(得分:2)

由于你没有粘贴你的蜘蛛代码,我只能承担一些事情。 一个假设是你没有在你的物品中设置所需的字段。他们需要在ELASTICSEARCH_UNIQ_KEY中指定一个字段,并且必须是唯一的。最简单的方法可能是使用url

# somewhere deep in your callback, 
# where you create and yield your item
...
myitem['url'] = response.url
return myitem

并确保在settings.py

中进行设置
ELASTICSEARCH_UNIQ_KEY = 'url'

答案 1 :(得分:0)

我只是在settings.py文件中注释了这个字段(根据official documentation,此字段是可选的)

#ELASTICSEARCH_UNIQ_KEY = 'url'  # Custom unique key