Запланируйте паука в scrapyd и передайте параметры конфигурации паука

Я пытаюсь настроить пауки, созданные с помощью slyd, для использования scrapy -asticsearch, поэтому я отправляю -d parameter=value настроить это:

curl http://localhost:6800/schedule.json -d project=myproject  -d spider=myspider -d setting=CLOSESPIDER_ITEMCOUNT=100 -d settings=ITEM_PIPELINE=scrapyelasticsearch.ElasticSearchPipeline -d setting=ELASTICSEARCH_SERVER=localhost -d setting=ELASTICSEARCH_PORT=9200 -d setting=ELASTICSEARCH_INDEX=scrapy -d setting=ELASTICSEARCH_TYPE=items -d setting=ELASTICSEARCH_UNIQ_KEY=url

Это конфигурация по умолчанию, которая должна идти в settings.py:

ITEM_PIPELINES = [
  'scrapyelasticsearch.ElasticSearchPipeline',
]

ELASTICSEARCH_SERVER = 'localhost' # If not 'localhost' prepend 'http://'
ELASTICSEARCH_PORT = 9200 # If port 80 leave blank
ELASTICSEARCH_USERNAME = ''
ELASTICSEARCH_PASSWORD = ''
ELASTICSEARCH_INDEX = 'scrapy'
ELASTICSEARCH_TYPE = 'items'
ELASTICSEARCH_UNIQ_KEY = 'url'

Я не нашел способа настроить slyd для автоматической генерации этих настроек с каждым новым пауком, поэтому я пытаюсь передать параметры как -d аргументы. scrapyd по-прежнему запускает пауков, но ничего не сохраняется в asticsearch, журнал ошибок показывает следующее:

[Launcher,1900/stderr] /home/PORTIA/local/lib/python2.7/site-packages/scrapy/contrib/pipeline/__init__.py:21: 
ScrapyDeprecationWarning: ITEM_PIPELINES defined as a list or a set is deprecated, switch to a dict
      category=ScrapyDeprecationWarning, stacklevel=1)

1 ответ

Решение

В новой версии scrapy вы должны определить конвейеры как словарь

    ITEM_PIPELINES = {'scrapyelasticsearch.ElasticSearchPipeline': 100}

Вы можете сделать все пауки в одном проекте в папке паука, чтобы вы могли поделиться своими настройками и конвейерами

Другие вопросы по тегам