如何将参数传递给scrapyd的scrapy crawler?

时间:2015-08-26 10:20:20

标签: python scrapy scrapyd

我可以用简单的命令在scrapy中运行蜘蛛

scrapy crawl custom_spider -a input_val=5 -a input_val2=6

其中input_valinput_val2是传递给蜘蛛的值

以上方法工作正常..

然而,在使用scrapyd安排蜘蛛时

正在运行

curl http://localhost:6800/schedule.json -d project=crawler -d input_val=5 -d input_val2=6 -d spider=custom_spider

引发错误

spider = cls(*args, **kwargs)
    exceptions.TypeError: __init__() got an unexpected keyword argument '_job'

我如何让这个工作?

修改 这个:在我的初始化程序中:

def __init__(self,input_val=None, input_val2=None, *args, **kwargs):
        self.input_val = input_val
        self.input_val2 = input_val2
        super(CustomSpider, self).__init__(*args, **kwargs)

1 个答案:

答案 0 :(得分:6)

请务必在您的蜘蛛中支持任意关键字参数,并使用__init__ like shown in the docs for spider arguments致电super()

class MySpider(scrapy.Spider):
    name = 'myspider'

    def __init__(self, category=None, *args, **kwargs):
        super(MySpider, self).__init__(*args, **kwargs) # <- important
        self.category = category

Scrapyd提供作业ID作为传递给蜘蛛的_job参数(参见code here)。