Scrapy Pagination Infinite - PullRequest
0 голосов
/ 01 января 2019

У меня есть веб-проект с 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...

1 Ответ

0 голосов
/ 01 января 2019

то, что я наблюдаю из поведения в сети, API-интерфейсы продуктов

Это API-интерфейсы, из которых он получает продукты, и здесь PageNumber контролирует нумерацию страниц, а fq контролируеткатегория продукта и т. д., но когда значение pageNumber превышает, оно никогда не даст вам перенаправление {я проверял это в почтальоне}, но пустой ответ, поэтому проверьте, получены ли продукты в вызове API, увеличьте номер страницы, в противном случае остановите.И изменить fq [категория]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...