AttributeError: 'int'对象没有'rindex'属性
设置
我正在使用 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
}