PDF või pilt võib puhverserveri kaudu edukalt kohale jõuda ja seejärel keelutuvastuses nurjuda. Scrapy baas-Response avab keha baidid, kuid selle text-omadus tekitab vea “Response content isn't text.”

Kui paigaldatud scrapy-proxy-pooli reegel otsib response.text tingimusteta, asenda see reegel tüübiteadliku versiooniga:

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

Vali see paketi laienduse seadistuse kaudu:

PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"

See säilitab reegli oleku- ja tühja keha reeglid, piirates tekstotsingu vastustega, mis seda toetavad. Päritud erandireegel jääb samuti saadavaks.

Vaata need ülejäänud reeglid ka rakenduse jaoks üle: tahtlikult tühi 200 vastus või tavaline sihtkoha viga ei tõenda alati halba puhverserverit. Jäta vahetarkvara aktiivseks ja muuda klassifikatsiooni, mis vea põhjustas, selle asemel et binaarsete allalaadimiste jaoks kogu keelutuvastus välja lülitada.

Seotud artiklid