scrapy-proxy-pool: trajtimi i përgjigjeve binare në zbulimin e bllokimeve
Kufizoni kontrollin e modelit tekstual të scrapy-proxy-pool te TextResponse, duke ruajtur vendimet për statusin dhe trupin bosh.
Një PDF ose imazh mund të arrijë me sukses përmes një proxy dhe më pas të dështojë brenda zbulimit të bllokimeve. Response bazë i Scrapy ekspozon bajtët e trupit, por vetia e tij text ngre gabimin «Response content isn't text.»
Nëse politika e instaluar e scrapy-proxy-pool kërkon response.text pa kushte, zëvendësojeni atë politikë me një version që njeh llojin:
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
Zgjidheni përmes cilësimit të shtesës së paketës:
PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"
Kjo ruan rregullat e politikës për statusin dhe trupin bosh dhe e kufizon kërkimin tekstual te përgjigjet që e mbështesin. Politika e trashëguar e përjashtimeve mbetet e disponueshme.
Shqyrtoni edhe ato rregulla të mbetura për aplikacionin: një përgjigje 200 bosh qëllimisht ose një gabim i zakonshëm destinacioni nuk provojnë gjithmonë një proxy të keq. Lëreni middleware aktiv dhe ndryshoni klasifikimin që shkaktoi dështimin, në vend që të çaktivizoni të gjithë zbulimin e bllokimeve për shkarkimet binare.