scrapy-proxy-pool: yasak algılamada ikili yanıtları işleme
scrapy-proxy-pool metin deseni denetimini TextResponse ile sınırlayın, durum ve boş gövde kararlarını koruyun.
Bir PDF veya görsel proxy üzerinden başarıyla gelebilir ve ardından yasak algılamada başarısız olabilir. Scrapy'nin temel Response nesnesi gövde baytlarını açığa çıkarır, ancak text özelliği “Response content isn't text.” hatasını yükseltir.
Kurulu scrapy-proxy-pool ilkesi response.text içinde koşulsuz arıyorsa, o ilkeyi türü bilen bir sürümle değiştirin:
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
Paketin uzantı ayarı üzerinden seçin:
PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"
Bu, ilkenin durum ve boş gövde kurallarını korur ve metin aramasını bunu destekleyen yanıtlarla sınırlar. Devralınan istisna ilkesi de kullanılabilir kalır.
Kalan kuralları uygulama açısından da gözden geçirin: kasıtlı olarak boş bir 200 yanıtı veya olağan bir hedef hatası her zaman kötü proxy kanıtı değildir. Ara katmanı etkin bırakın ve hataya yol açan sınıflandırmayı değiştirin; ikili indirmeler için tüm yasak algılamayı kapatmak yerine.