PDF yoki rasm proksi orqali muvaffaqiyatli kelib, keyin taqiqlashni aniqlashda muvaffaqiyatsiz bo'lishi mumkin. Scrapy'ning asosiy Response obyekti tana baytlarini ochib beradi, lekin uning text xususiyati “Response content isn't text.” xatosini chiqaradi.

Agar o'rnatilgan scrapy-proxy-pool siyosati response.textni shartsiz qidirsa, o'sha siyosatni turni hisobga oluvchi versiya bilan almashtiring:

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

Uni paketning kengaytma sozlamasi orqali tanlang:

PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"

Bu siyosatning status va bo'sh tana qoidalarini saqlaydi va matn qidiruvini uni qo'llab-quvvatlaydigan javoblar bilan cheklaydi. Meros olingan istisno siyosati ham mavjud bo'lib qoladi.

Qolgan qoidalarni ilova uchun ham ko'rib chiqing: ataylab bo'sh 200 javobi yoki oddiy manzil xatosi har doim yomon proksi dalili emas. Middleware'ni faol qoldiring va muvaffaqiyatsizlikka sabab bo'lgan tasnifni o'zgartiring, binar yuklab olishlar uchun butun taqiqlashni aniqlashni o'chirish o'rniga.

O'xshash maqolalar