PDF немесе сурет прокси арқылы сәтті өтіп, содан кейін бұғаттау анықтауында сәтсіздікке ұшырауы мүмкін. Scrapy-дің негізгі Response нысаны дене байттарын көрсетеді, бірақ оның text қасиеті “Response content isn't text.” қатесін тудырады.

Егер орнатылған scrapy-proxy-pool саясаты response.text-ті шартсыз іздейтін болса, ол саясатты түрді ескеретін нұсқамен ауыстырыңыз:

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

Оны пакеттің кеңейтім параметрі арқылы таңдаңыз:

PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"

Бұл саясаттың күй мен бос дене ережелерін сақтайды және мәтіндік іздеуді оны қолдайтын жауаптармен шектейді. Мұрагерлік ерекшелік саясаты да қолжетімді болып қалады.

Қалған ережелерді қосымша үшін де қарап шығыңыз: әдейі бос 200 жауабы немесе қарапайым мақсат қатесі әрдайым нашар проксидің дәлелі емес. Аралық бағдарламаны белсенді ұстап, сәтсіздікке себеп болған жіктеуді өзгертіңіз, бинарлық жүктеулер үшін бүкіл бұғаттау анықтауын өшірудің орнына.

Қатысты мақалалар