2014-09-11 116 views
2

我試圖與配置創建的SlyD使用scrapy-elasticsearch蜘蛛,所以我送-d parameter=value進行配置:附表scrapyd蜘蛛和蜘蛛通過配置選項

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仍然運行的蜘蛛,但沒有被保存到elasticsearch,錯誤日誌顯示如下:

[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) 

回答

3

在scrapy的新版本中,你必須定義管道作爲字典這樣

ITEM_PIPELINES = {'scrapyelasticsearch.ElasticSearchPipeline': 100} 

你可以做正在蜘蛛文件夾下的所有蜘蛛在同一個項目中,以便您可以共享您的設置和管道

+0

有沒有辦法將該字典作爲參數發送到scrapyd休息?如果不是,我怎麼能與所有蜘蛛共享相同的設置?我想要一種方法來設置一次並在所有項目中使用。 – localhost 2014-09-11 14:52:27

+0

儘管這並沒有回答將管道作爲參數發送,但它確實有效,我最終只是設置了slyd的項目創建模板來添加它。 – localhost 2014-09-11 18:22:28