Python 在Scrapy中,如何使用相同的解析方法编写两个spider而不重复代码?

Python 在Scrapy中,如何使用相同的解析方法编写两个spider而不重复代码?,python,scrapy,dry,Python,Scrapy,Dry,我想用不同的方法写两个spider,但方法完全相同。但是,由于parse是一种实例方法,因此我不知道如何在不简单地复制粘贴所有代码的情况下将它从一个spider“复制”到另一个spider。我怎样才能做到这一点呢?您可以像在任何其他情况下一样使用inherence: class BaseSpider(scrapy.Spider): def parse(self, request): pass # Common parse code class SpiderOne(Ba

我想用不同的方法写两个spider,但方法完全相同。但是,由于
parse
是一种实例方法,因此我不知道如何在不简单地复制粘贴所有代码的情况下将它从一个spider“复制”到另一个spider。我怎样才能做到这一点呢?

您可以像在任何其他情况下一样使用inherence:

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

您可以像在任何其他情况下一样使用inherence:

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

任何方法都是类似于
fun的函数(自身、其他参数…
)。因此,您可以使用
self
参数将公共代码实现为函数,但不在任何类之外。然后通过传递这个
self
作为第一个参数来调用它。

任何方法都是类似
fun的函数(self、其他参数…
)。因此,您可以使用
self
参数将公共代码实现为函数,但不在任何类之外。然后通过将此
self
作为第一个参数来调用它