2014-10-20 3 views
0

SetupAttributeError: «INT» объект не имеет атрибута «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' 

Notes

  • мая или не могут быть актуальны. Мне действительно пришлось изменить мою локальную копию файла python ElasticSearchPipeline, чтобы прокомментировать this block, который вызывал синтаксические ошибки в точке, где она индексировалась с помощью uniq_id.

Любая помощь очень ценится.

ответ

0

Глупый, глупый глупый. Это была синтаксическая ошибка!

Имея список ITEM_PIPELINES является устаревшим, поэтому он должен быть словарем, но моя попытка преобразования в словарь было ужасно изуродованные:

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

Это не действительный синтаксис. Оно должно быть:

ITEM_PIPELINES = { 
    'scrapyelasticsearch.scrapyelasticsearch.ElasticSearchPipeline': 100 
} 
Смежные вопросы