Используйте определенное промежуточное программное обеспечение загрузчика Scrapy для каждого запроса

Я использую Crawlera в качестве службы ротации IP-адресов для сканирования определенного веб-сайта, который быстро блокирует мой IP-адрес, но у меня есть эта проблема только с одним веб-сайтом из дюжины.

Поскольку для проекта Scrapy можно зарегистрировать несколько промежуточных программ, я хотел знать, можно ли определить промежуточное программное обеспечение загрузчика для использования ПО ЗАПРОСУ.

Таким образом, я мог использовать свою квоту Crawlera только для проблемного веб-сайта, а не для всех моих запросов.


person Max atton    schedule 28.05.2020    source источник
comment
ответ: да, вы можете сделать это.. для получения более четкого ответа вам необходимо более четко описать вашу проблему.. вы сканируете несколько доменов в одном пауке? или сканер включен на уровне проекта, и для каждого домена у вас есть разные пауки?   -  person akhter wahab    schedule 28.05.2020
comment
Если вы используете scrapy-crawlera, вы можете использовать dont_proxy для запросов, которые не нуждаются в Crawlera: scrapy-crawlera.readthedocs.io/en/v1.6.0/#how-to-use-it   -  person Gallaecio    schedule 01.06.2020
comment
Спасибо @Gallaecio, это лучший способ!   -  person Max atton    schedule 01.06.2020


Ответы (1)


Одно из возможных решений - использование спайдера custom_settings атрибут (и удаление CrawleraMiddleware из настроек проекта
(при условии, что у вас есть 1 поисковый робот на 1 веб-сайт и CrawleraMiddleware включен в настройках проекта):

class ProblemSpider(scrapy.spider):

    custom_settings = {
        'DOWNLOADER_MIDDLEWARES' : {'scrapy_crawlera.CrawleraMiddleware': 610},
        'CRAWLERA_ENABLED' : True,
        'CRAWLERA_APIKEY' : '<API key>'}

    def parse(self, response):
....

В этом случае CrawleraMiddleware будет использоваться только в пауках, где это определено в их атрибуте custom_settings.

person Georgiy    schedule 28.05.2020