Я делаю проект Scrapy, который выполняется на сервере интрасети, мне нужно установить прокси-сервер для подключения к внешней сети, чтобы я не мог использовать способ прокси (изменить IP-адрес), чтобы не быть заблокированным.
middlewares.py:
class SetProxy(object):
def process_request(self, request, spider):
request.meta['proxy'] = os.getenv('HTTP_PROXY')
Мой целевой веб-сайт возвращает ответ о статусе 200, даже когда он блокирует меня, поэтому я могу только определить содержание ответа, чтобы проверить, не заблокирован ли я
mySpider.py:
def parse(self, response):
block_msg1 = "FOR SECURITY REASONS, THIS PAGE CAN NOT BE ACCESSED!"
block_msg2 = "Overrun"
# not be banned
if str(response.body).find(block_msg1) == -1 and str(response.body).find(block_msg2) == -1:
......
yield item
# get banned
elif str(response.body).find(block_msg1) != -1 or str(response.body).find(block_msg2) != -1:
# I want to pause Scrapy (stop sending requests but not stop pipelines' work) for a while here but I don't know how
yield scrapy.Request(url=response.url, headers=sub_headers, callback=self.parse_sub)
Как сделать так, чтобы Scrapy прекратил посылать запросы на некоторое время, но не остановил конвейеры, когда я обнаружил, что они заблокированы в методе parse_sub (), ивосстановить через n минут?