Scrapy - Остановка сканера при обнаружении дублирующего элемента - PullRequest
1 голос
/ 28 сентября 2019

Существует множество веб-сайтов, за которыми мне приходится следовать жесткой кодовой странице (увеличивая номер страницы после сканирования элементов), и некоторые из этих веб-сайтов возвращаются на страницу 1 после последней страницы.Например, если на веб-сайте имеется 25 страниц элементов, отправка запроса на 26-ю страницу приводит к ответу первой страницы.

В этот момент дублирующий фильтр Scrapy работает нормально и не очищает элементы, но программа-обходчикпродолжает бежать.Можно ли как-нибудь остановить процесс сканирования, если сработал дублирующий фильтр?

Я не хочу жестко задавать номер страницы, как этот, поскольку он может меняться со временем.

if self.page < 25:
    yield scrapy.Request(...)

1 Ответ

0 голосов
/ 30 сентября 2019
  1. Сконфигурируйте ваш запрос, чтобы он не отфильтровывался дублирующимся фильтром (добавьте dont_filter=True в конструктор запросов)

  2. Используйте обратный вызов запроса, чтобы остановитьсканер (raise scrapy.exceptions.CloseSpider), когда response.url является неожиданно URL первой страницы

...