AttributeError:' int'对象没有属性' rindex'

时间:2014-10-20 13:15:15

标签: python scrapy

设置

我正在使用Scrapy 0.24.4和Scrapy-ElasticSearch 0.5来抓取网站并将结果存储在我运行的弹性搜索实例中。

我已经使用this blog post设置了所有内容,并进行了我记录here的小修改。

settings.py

BOT_NAME = 'blah'

SPIDER_MODULES = ['blah.spiders']
NEWSPIDER_MODULE = 'blah.spiders'

ITEM_PIPELINES = [
  'scrapyelasticsearch.scrapyelasticsearch.ElasticSearchPipeline', 100
]

ELASTICSEARCH_SERVER = 'localhost' 
ELASTICSEARCH_PORT = 9200 
ELASTICSEARCH_INDEX = 'scrapy'
ELASTICSEARCH_TYPE = 'items'

问题

如果我运行以下命令来抓取网站:

scrapy crawl wiki -o wiki.json

将ITEM_PIPELINES注释掉 - 然后它可以正常工作并将所有结果导出到wiki.json文件。

取消注释ITEM_PIPELINES(例如设置为启用管道结果到elasticsearch) - 我收到以下错误:

File "/usr/local/lib/python2.7/dist-packages/scrapy/utils/misc.py", line 34, in load_object
   dot = path.rindex('.')
AttributeError: 'int' object has no attribute 'rindex'

备注

  • 可能或可能不相关。我实际上不得不更改我的ElasticSearchPipeline python文件的本地副本以注释掉this block,这导致语法错误在使用uniq_id进行索引时。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

愚蠢,愚蠢的愚蠢。这是语法错误!

不推荐使用ITEM_PIPELINES列表,因此它需要是一个字典,但我转换为字典的尝试非常严重:

ITEM_PIPELINES = [
  'scrapyelasticsearch.scrapyelasticsearch.ElasticSearchPipeline', 100
]

这是无效的语法。应该是:

ITEM_PIPELINES = {
  'scrapyelasticsearch.scrapyelasticsearch.ElasticSearchPipeline': 100
}