from scrapy.pipelines.images import ImagesPipeline

class ProxiedImagesPipeline(ImagesPipeline):
    def get_media_requests(self, item, info):
        for request in super().get_media_requests(item, info):
            request.meta['proxy'] = 'http://proxy.example:8080'
            yield request

Scrapy 2.13.3 के लिए, ITEM_PIPELINES में मौजूद मानक ImagesPipeline प्रविष्टि को इस सबक्लास के आयात पथ से बदलें। IMAGES_STORE और अन्य सेटिंग्स बनाए रखें।

पैरेंट को कॉल करने से उसका कॉन्फ़िगर किया गया छवि-URL फ़ील्ड और कॉलबैक सुरक्षित रहते हैं। सबक्लास केवल अनुरोध मार्ग जोड़ता है, जिसे सक्षम HttpProxyMiddleware उपभोग करता है। हर छवि URL अपना गंतव्य बना रहता है। प्रॉक्सी क्रेडेंशियल रहित नए सार्वजनिक-छवि अनुरोध, वह मार्ग अनुमत होने पर HTTP प्रॉक्सी सूची से कोई प्रविष्टि उपयोग कर सकते हैं।

पृष्ठ अनुरोध अपनी नीति रखते हैं। वैश्विक प्रॉक्सी वातावरण के साथ, इस संस्करण में meta={'proxy': None} चयनित पृष्ठ अनुरोध को सीधा बनाता है।

जाँचें कि डाउनलोड वास्तव में जारी हुआ। पाइपलाइन कैश हिट नेटवर्क अनुरोध से बच सकता है। नए स्थानांतरणों के लिए, पूर्ण-छवि परिणाम प्रविष्टियों की तुलना अनुरोधित URL से करें: सफल संचालन वहाँ दिखते हैं, जबकि विफलताएँ मूल छवि-URL फ़ील्ड भरा छोड़ सकती हैं। गुम परिणामों को डाउनलोडर लॉग और चुने गए प्रॉक्सी से ट्रेस करें।

संबंधित लेख