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 प्रतिक्रिया या सामान्य गंतव्य त्रुटि हमेशा खराब प्रॉक्सी का प्रमाण नहीं है। मिडलवेयर सक्रिय रखें और विफलता का कारण बने वर्गीकरण को बदलें, बाइनरी डाउनलोड के लिए सारी प्रतिबंध पहचान बंद करने के बजाय।