2015-08-26 2 views
4

je peux courir une araignée dans scrapy avec une simple commandeComment passer des paramètres à scrapy crawler de scrapyd?

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

input_val et input_val2 sont les valeurs que je suis de passage à l'araignée

et la méthode ci-dessus fonctionne très bien ..

Cependant, alors que la planification d'une araignée avec scrapyd

course

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

génère une erreur

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

Comment puis-je obtenir que cela fonctionne?

Modifier Ce: est dans mon initialiseur:

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) 

Répondre

5

Assurez-vous d'appuyer les arguments de mots clés arbitraires dans votre araignée et appeler __init__ avec super()like shown in the docs for spider arguments:

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

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

Scrapyd fournit le travail ID en tant qu'argument _job passé à l'araignée (voir code here).

+0

Merci, j'ai édité la question avec le constructeur, l'erreur est toujours là ... une idée de ce qui ne va pas? – wolfgang

+0

@wolfgang hm, quelle version de scrapy et scrapyd utilisez-vous? pourriez-vous fournir un petit exemple de projet autonome qui reproduit le problème lors du déploiement sur scrapyd? – elias

+0

@wolfgang Je n'ai pas pu reproduire le problème avec le code que vous avez fourni. – elias