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

0 投票
1 回答
628 浏览
提问于 2025-04-28 13:32

设置

我正在使用 Scrapy 0.24.4 和 Scrapy-ElasticSearch 0.5 来抓取一个网站,并把结果存储到我正在运行的 elasticsearch 实例中。

我参考了 这篇博客 来完成设置,做了一些小的修改,具体内容我在 这里 记录了。

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 文件,注释掉 这个代码块,因为它在使用 uniq_id 索引时导致了语法错误。

任何帮助都非常感谢。

暂无标签

1 个回答

0

真是太傻了,真是太傻了,真是太傻了。原来是语法错误!

现在使用 ITEM_PIPELINES 列表已经不推荐了,所以它需要变成一个字典。但是我试着把它转换成字典时搞得一团糟:

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

这不是有效的语法。应该是这样:

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

撰写回答