У меня есть два паука, каждый из которых начинается с другого URL и заканчивается на другой конечной странице того же домена. Что мне нужно, так это на последней странице, но они должны поступить туда после потока из-за файлов cookie и требований запроса. Они выглядят примерно так:
class Spider1(Spider):
def start_requests(self):
yield Request(..., callback=self.parse_first_page_spider1) #or parse_first_page_spider2
def parse_first_page_spider1(self, response):
#Get some data, and makes new request
yield Request(..., callback=self.parse_second_page_spider1) # or _spider2
def parse_second_page_spider1(self, response):
#Get some data, and makes new request
yield Request(..., callback=self.parse_final_page)
def parse_final_page(self, response)
#Here i gather all the data and make an item
item = CustomItem()
yield item
Методы parse_first_page
и parse_second_page
различны для паука 1 и 2.
Теперь мне нужен третий паук, который будет делать ВСЕ в Spider1 И Spider2, но parse_final_page
будет другим. Поэтому я подумал, что мог бы заставить нового паука наследовать от обоих пауков что-то вроде этого:
class Spider3(Spider1, Spider2):
url1 = www.page.com/page1
url2 = www.page.com/page2
def start_requests(self):
yield Request(url1, callback=self.parse_first_page_spider1)
yield Request(url2, callback=self.parse_first_page_spider2)
def parse_final_page(self, response)
#Here I would overwrite the methods, so both ended up here.
Это не работает, только запросы spider1 заканчиваются на parse_final_page, и никакой ошибки не возникает, но ничего от spider2 даже очищен.
Я также пытался сделать BaseSpider, и Spider1 и Spider2 наследовали его, только перезаписывая методы в середине, но тогда я не знаю, как заставить их работать раздельно ,