блин, от вообще не пойму, тем более, оно не стабильно пропадает 😕 сейчас парсер пройдет проход, одна потеря. мой код на гисте - если отбросить запросы (это старая версия) - в остальном - нормальный? ибо кроме него, только ротатор прокси.
от банов прокси - не зависит (я про ретраи), их по много раз больше.
мне в голову приходит только одно, и наверно это неправильно, но: может попробовать def parse(self, response) на def parse(self, response, **kwargs): сменить? Может не зря pycharm на несовпадение сигнатуры ругается.
Если ключевым аргументом передается cb_kwargs={'cat': cat}, то получать надо не cat = kwargs.get('cat'), а cat = kwargs.get('cb_kwargs')('cat'). Попытка получить cat = kwargs.get('cat') будет None.
В скрапи я не знаю как там это работает, я про базовые функции передачи ключевых аргументов. Раз ты так говоришь, значит, внутри где-то этот cb_kwargs словарь разворачивается, хз. Я лишь отметил то, что бросилось в глаза, поэтому и спросил не может ли быть в этом причина