Size: a a a

2020 October 05

AR

Andrey Rahmatullin in Scrapy
а, зашибись
источник

Marat Мkhitаrуаn in Scrapy
class IpRotationMiddleware:
   # Not all methods need to be defined. If a method is not defined,
   # scrapy acts as if the spider middleware does not modify the
   # passed objects.

   def process_spider_input(self, response, spider):
       # Called for each response that goes through the spider
       # middleware and into the spider.
       if f:=response.xpath('body/pre'):
           if f.get()[0:20] == '<pre>\nYour IP addres':
               logging.warning("IP banned, rotating")
               raise IpBannedException
       # Should return None or raise an exception.
       return None

   def process_spider_exception(self, response, exception, spider):
       # Called when a spider or process_spider_input() method
       # (from other spider middleware) raises an exception.
       # Should return either None or an iterable of Request or item objects.
       if exception == IpBannedException:
           new_request = response.request.replace(dont_filter=True)
           yield [new_request]
           raise exceptions.IgnoreRequest
SPIDER_MIDDLEWARES = {
   'clinicalsynopsis.middlewares.Ignore404MiddleWare': 1,
   'clinicalsynopsis.middlewares.IpRotationMiddleware': 2,
}
не понимаю что не так делаю
источник

AR

Andrey Rahmatullin in Scrapy
yield [new_request] неправильно, конечно
источник

AR

Andrey Rahmatullin in Scrapy
но вообще много что может быть неправильно, неохота выяснять
источник

AR

Andrey Rahmatullin in Scrapy
всё ещё непонятно зачем это в spider middleware делать вместо того чтобы сделать как в RetryMiddleware
источник

Marat Мkhitаrуаn in Scrapy
Andrey Rahmatullin
всё ещё непонятно зачем это в spider middleware делать вместо того чтобы сделать как в RetryMiddleware
мне нужно респонс проверять
источник

Marat Мkhitаrуаn in Scrapy
download middleware перед посыланием запроса срабатывают
источник

Marat Мkhitаrуаn in Scrapy
насколько я понял
источник

AR

Andrey Rahmatullin in Scrapy
ну тебе виднее
источник

AR

Andrey Rahmatullin in Scrapy
тем более ты уже смотрел код RetryMiddleware
источник

МС

Михаил Синегубов... in Scrapy
Marat Мkhitаrуаn
class IpRotationMiddleware:
   # Not all methods need to be defined. If a method is not defined,
   # scrapy acts as if the spider middleware does not modify the
   # passed objects.

   def process_spider_input(self, response, spider):
       # Called for each response that goes through the spider
       # middleware and into the spider.
       if f:=response.xpath('body/pre'):
           if f.get()[0:20] == '<pre>\nYour IP addres':
               logging.warning("IP banned, rotating")
               raise IpBannedException
       # Should return None or raise an exception.
       return None

   def process_spider_exception(self, response, exception, spider):
       # Called when a spider or process_spider_input() method
       # (from other spider middleware) raises an exception.
       # Should return either None or an iterable of Request or item objects.
       if exception == IpBannedException:
           new_request = response.request.replace(dont_filter=True)
           yield [new_request]
           raise exceptions.IgnoreRequest
SPIDER_MIDDLEWARES = {
   'clinicalsynopsis.middlewares.Ignore404MiddleWare': 1,
   'clinicalsynopsis.middlewares.IpRotationMiddleware': 2,
}
не понимаю что не так делаю
стесняюсь спросить, а чем ротатор проксей не подходит? или обязательно костылить свое?
источник

МС

Михаил Синегубов... in Scrapy
тем более - тут и ротации никакой нет...
источник

AR

Andrey Rahmatullin in Scrapy
тем и не подходит
источник

Marat Мkhitаrуаn in Scrapy
https://github.com/u1234x1234/torpool сам меняет айпи, мне не нужно сами прокси блеклистить
источник

МС

Михаил Синегубов... in Scrapy
тор - это принципиально?
источник

Marat Мkhitаrуаn in Scrapy
Михаил Синегубов
тор - это принципиально?
нет, просто бесплатный прокси пул получается
источник

МС

Михаил Синегубов... in Scrapy
тады "ой", хотя..., я бы от какого ротатора плясать бы начал.
источник

МС

Михаил Синегубов... in Scrapy
но, по правде говоря, у меня ТОР так и не взлетел. Хотя, может я слишком многого от него хотел :)
источник

Marat Мkhitаrуаn in Scrapy
Сделал но сразу такое вылазит
DEBUG: Filtered duplicate request: <GET > - no more duplicates will be shown (see DUPEFILTER_DEBUG to show all duplicates)
возможно добавить время через сколько перепосылать запрос?
источник

Marat Мkhitаrуаn in Scrapy
например чтобы через 30 секунд попробывал снова отправить
источник