2014-10-20 44 views
0

設置AttributeError的:「詮釋」對象有沒有屬性「RINDEX」

我使用Scrapy 0.24.4和Scrapy-ElasticSearch 0.5刮網站,並將結果保存在我已經運行的elasticsearch實例。

我已經使用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文件的本地副本,以便在使用uniq_id進行索引時導致語法錯誤的註釋爲this block

任何幫助極大的讚賞。

回答

0

愚蠢,愚蠢的愚蠢。這是一個語法錯誤!

具有ITEM_PIPELINES列表已經過時,所以它需要一個字典,但我在轉換成字典嘗試是可怕的錯位:

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

這不是有效的語法。它應該是:

ITEM_PIPELINES = { 
    'scrapyelasticsearch.scrapyelasticsearch.ElasticSearchPipeline': 100 
} 
相關問題