scrapy-proxy-pool: хаалт илрүүлэхэд хоёртын хариултыг зохицуулах
scrapy-proxy-pool-ийн текстийн загварын шалгалтыг TextResponse-д хязгаарлаж, статус болон хоосон биеийн шийдвэрийг хадгална.
PDF эсвэл зураг проксигоор амжилттай ирээд дараа нь хаалт илрүүлэхэд бүтэлгүйтэж болно. Scrapy-н үндсэн Response нь body байтуудыг ил гаргадаг ч түүний 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 хариулт эсвэл энгийн очих газрын алдаа нь муу проксигийн баталгаа болдоггүй. Middleware-ийг идэвхтэй байлгаж, алдаа үүсгэсэн ангиллыг өөрчил, хоёртын татан авалтын хувьд бүх хаалт илрүүлэлтийг унтраахын оронд.