У меня есть сценарий, когда я просматриваю магазин, просматривая десятки страниц.Затем, когда я найду нужный товар, я добавлю его в корзину.
Наконец, я хочу оформить заказ.Проблема заключается в том, что при использовании цепочки скрапа требуется извлекать корзину столько раз, сколько у меня есть элементов в корзине.
Как объединить связанные запросы в один, поэтому после добавления 10 элементов вкорзина, оформление заказа вызывается только один раз?
def start_requests(self):
params = getShopList()
for param in params:
yield scrapy.FormRequest('https://foo.bar/shop', callback=self.addToBasket,
method='POST', formdata=param)
def addToBasket(self, response):
yield scrapy.FormRequest('https://foo.bar/addToBasket', callback=self.checkoutBasket,
method='POST',
formdata=param)
def checkoutBasket(self, response):
yield scrapy.FormRequest('https://foo.bar/checkout', callback=self.final, method='POST',
formdata=param)
def final(self):
print("Success, you have purchased 59 items")
РЕДАКТИРОВАТЬ:
Я пытался сделать запрос в закрытом событии, но он не работает ни на запрос, ни на обратный вызов..
def closed(self, reason):
if reason == "finished":
print("spider finished")
return scrapy.Request('https://www.google.com', callback=self.finalmethod)
print("Spider closed but not finished.")
def finalmethod(self, response):
print("finalized")