代码之家  ›  专栏  ›  技术社区  ›  localhost

在scrapyd中安排蜘蛛并传递蜘蛛配置选项

  •  2
  • localhost  · 技术社区  · 10 年前

    我正在尝试配置使用slyd创建的spider scrapy-elasticsearch ,所以我要发送 -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以自动生成每个新spider的这些设置,所以我尝试将这些选项传递为 -d 论据。scrayd仍然运行spider,但没有任何内容保存到弹性搜索,错误日志显示如下:

    [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 回复  |  直到 10 年前
        1
  •  3
  •   Tasawer Nawaz    10 年前

    在新版剪贴簿中,您必须将管道定义为这样的字典

        ITEM_PIPELINES = {'scrapyelasticsearch.ElasticSearchPipeline': 100}
    

    您可以做的是在spider文件夹下的同一项目中创建所有spider,这样您就可以共享设置和管道