PDF ili slika mogu uspješno stići kroz proxy, a zatim pasti u otkrivanju zabrane. Osnovni Response u Scrapyju izlaže bajtove tijela, ali njegovo svojstvo text podiže grešku “Response content isn't text.”

Ako instalirana politika scrapy-proxy-pool pretražuje response.text bezuslovno, zamijenite tu politiku verzijom koja vodi računa o tipu:

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

Odaberite je kroz postavku proširenja paketa:

PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"

Time se zadržavaju pravila politike o statusu i praznom tijelu, dok se tekstualna pretraga ograničava na odgovore koji je podržavaju. Naslijeđena politika izuzetaka također ostaje dostupna.

Pregledajte i ta preostala pravila za aplikaciju: namjerno prazan odgovor 200 ili obična greška odredišta nije uvijek dokaz lošeg proxyja. Ostavite middleware aktivan i promijenite klasifikaciju koja je izazvala kvar, umjesto da isključite cijelo otkrivanje zabrane za binarne preuzimanja.

Povezani članci