У меня есть веб-проект с Scrapy.И у меня есть URL с бесконечной нумерацией страниц.Мой начальный URL: https://nuevo.jumbo.cl/lacteos-y-bebidas-vegetales/leches-blancas?sl=3a356ef2-a2d4-4f1b-865f-c79b6fcf0f2a&PS=50&cc=18&sm=0&PageNumber=1&fq=C:/1/3/
, где "PageNumber" - от 1 до N страниц.Я поместил это в цикл for, для тестирования, в функцию parse:
for i in range(1,100):
yield FormRequest(
url=self.base_url+o.path,
method="GET",
formdata={'sl':'3a356ef2-a2d4-4f1b-865f-c79b6fcf0f2a','PS':'50','cc':'18','sm':'0','PageNumber':str(i),'fq':fq},
callback=self.parse_products,
meta = {
'dont_redirect': True,
})
Но мне нужно сделать это без цикла for, потому что в "start_urls" у меня есть еще много с другим "PageNumber".
Так что мне нужно перейти от PageNumber 1 к N, и когда больше нет страниц, остановить этот запрос.
Я пытаюсь с метаданным dont_redirect, потому что, когда паук не находитбольше страниц, я перенаправлял на другую страницу.Y попробуйте с Middlewares, в process_response () я положил:
if response.status == 301:
raise IgnoreRequest
При этом он не перенаправляет на другую страницу, но продолжает пытаться сканировать.
Мне нужно сделать что-то вроде:
while(true):
yield FormRequest #...etc etc etc...