Je voudrais écrire deux araignées dans Scrapy avec différentes méthodes start_requests, mais exactement la même méthode parse. Cependant, puisque parse
est une méthode d'instance, je ne suis pas sûr de savoir comment le 'copier' d'une araignée à l'autre sans simplement copier-coller tout le code. Comment pourrais-je y aller?Dans Scrapy, comment écrire deux araignées avec la même méthode d'analyse sans répétition de code?
Q
Dans Scrapy, comment écrire deux araignées avec la même méthode d'analyse sans répétition de code?
0
A
Répondre
2
Vous pouvez utiliser inhérence comme dans tous les autres cas:
class BaseSpider(scrapy.Spider):
def parse(self, request):
pass # Common parse code
class SpiderOne(BaseSpider):
def start_requests(self):
pass # Code for this spider
class SpiderTwo(BaseSpider):
def start_requests(self):
pass # Code for other spider
1
toute méthode est fonction comme fun(the_self, other_args...)
. Vous pouvez donc implémenter votre code commun en tant que fonction avec l'argument self
mais en dehors de toutes les classes. Puis appelez-le en passant ce self
comme premier argument.