Scrapy неожиданно пропускает URL - PullRequest
0 голосов
/ 11 марта 2019

Я создал паука, чтобы соскрести URL-адреса с веб-сайта.Количество URL не определено, может варьироваться от 500-50000 и так далее.При очистке некоторые URL-адреса пропускаются без всякой причины.Просто для любопытства я увеличил количество одновременных запросов до 500, а concurrent_request_per_ip - до 50. В результате это было невероятно быстро, так как я праздновал радость от достижения, с другой стороны, потери были огромными.Основные URL-адреса были пропущены, а данные были непоследовательными.

Может кто-нибудь помочь мне выяснить точную проблему и возможное решение этой проблемы?

Я позаботился обо всем коде состояния, таком как 300 с 400 с 500 с.

     if response.status in [404, 403, 302, 503, 502, 400, 407]:
        self.status = 'blocked'
        self.start_urls.append(self._request)
        self.start_urls = list(set(self.start_urls))
        print('blocked and current length->', len(self.start_urls))
        yield Request(url=response.request.url, callback=self.parse, dont_filter=True)
    else:
        self.status = ''
        try:
            self.start_urls.remove(self._request)
        except Exception as e:
            pass

Приведенный выше фрагмент кода обрабатывает код состояния и, если по какой-либо причине URL-адрес пропускается, он добавляет его обратно в список, если он не будет успешным.

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