scrapy-proxy-pool: தடை கண்டறிதலில் பைனரி பதில்களைக் கையாளுதல்
நிலை மற்றும் காலி-உடல் முடிவுகளைத் தக்கவைத்து scrapy-proxy-pool இன் உரை-முறை சரிபார்ப்பை TextResponse க்கு மட்டுப்படுத்துங்கள்.
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 பதில் அல்லது சாதாரண இலக்கு பிழை எப்போதும் மோசமான ப்ராக்ஸிக்கு சான்றாகாது. மிடில்வேரை செயலில் வைத்து தோல்விக்குக் காரணமான வகைப்பாட்டை மாற்றுங்கள், பைனரி பதிவிறக்கங்களுக்கு அனைத்து தடை கண்டறிதலையும் முடக்குவதற்குப் பதிலாக.