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 नोंद या उपवर्गाच्या import मार्गाने बदला. IMAGES_STORE आणि इतर सेटिंग्ज ठेवा.

पालकाला कॉल केल्याने त्याचे कॉन्फिगर केलेले प्रतिमा-URL फील्ड आणि कॉलबॅक जपले जातात. उपवर्ग फक्त विनंती-मार्ग जोडतो, जो सक्षम HttpProxyMiddleware वापरतो. प्रत्येक प्रतिमा URL त्याचे गंतव्य राहते. प्रॉक्सी क्रेडेन्शियल नसलेल्या नवीन सार्वजनिक-प्रतिमा विनंत्या, तो मार्ग परवानगी असल्यास HTTP प्रॉक्सी सूचीमधील नोंद वापरू शकतात.

पृष्ठ विनंत्या स्वतःचे धोरण ठेवतात. जागतिक प्रॉक्सी वातावरणात, या आवृत्तीत meta={'proxy': None} निवडलेल्या पृष्ठ विनंतीला थेट करतो.

डाउनलोड खरोखर जारी झाला का ते तपासा. पाइपलाइन कॅश हिट नेटवर्क विनंती टाळू शकतो. नवीन हस्तांतरणांसाठी, पूर्ण-प्रतिमा निकाल नोंदी विनंती केलेल्या URL शी तुलना करा: यशस्वी क्रिया तिथे दिसतात, तर अपयश मूळ प्रतिमा-URL फील्ड भरलेले सोडू शकतात. गहाळ निकाल डाउनलोडर लॉग आणि निवडलेल्या प्रॉक्सीद्वारे शोधा.

संबंधित लेख