scrapy-proxy-pool: binaarivastausten käsittely eston tunnistuksessa
Rajoita scrapy-proxy-poolin tekstikuvion tarkistus TextResponseen ja säilytä tila- ja tyhjä runko -päätökset.
PDF tai kuva voi saapua välityspalvelimen kautta onnistuneesti ja epäonnistua sitten eston tunnistuksessa. Scrapyn perus-Response paljastaa rungon tavut, mutta sen text-ominaisuus nostaa virheen “Response content isn't text.”
Jos asennettu scrapy-proxy-pool-käytäntö etsii response.textistä ehdoitta, korvaa käytäntö tyypin huomioivalla versiolla:
from scrapy.http import TextResponse
from scrapy_proxy_pool.policy import BanDetectionPolicy
class BinaryAwarePolicy(BanDetectionPolicy):
def response_is_ban(self, request, response):
if isinstance(response, TextResponse):
if self.BANNED_PATTERN.search(response.text):
return True
if response.status not in self.NOT_BAN_STATUSES:
return True
return response.status == 200 and not response.body
Valitse se paketin laajennusasetuksella:
PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"
Tämä säilyttää käytännön tila- ja tyhjä runko -säännöt ja rajoittaa tekstihaun vastauksiin, jotka tukevat sitä. Peritty poikkeuskäytäntö on edelleen käytettävissä.
Käy läpi myös jäljelle jäävät säännöt sovelluksen kannalta: tarkoituksella tyhjä 200-vastaus tai tavallinen kohdevirhe ei aina todista huonoa välityspalvelinta. Pidä middleware aktiivisena ja muuta luokitusta, joka aiheutti virheen, sen sijaan että kytkisit kaiken eston tunnistuksen pois binaarilatauksilta.