gpt4 book ai didi

python - 在 scrapyd 中安排一个蜘蛛并传递蜘蛛配置选项

转载 作者:太空宇宙 更新时间:2023-11-04 01:14:04 24 4
gpt4 key购买 nike

我正在尝试将使用 slyd 创建的蜘蛛配置为使用 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 以使用每个新蜘蛛自动生成这些设置,所以我试图将选项作为 -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)

最佳答案

在新版本的 scrapy 中,你必须像这样将管道定义为字典

    ITEM_PIPELINES = {'scrapyelasticsearch.ElasticSearchPipeline': 100}

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

关于python - 在 scrapyd 中安排一个蜘蛛并传递蜘蛛配置选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25788644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com