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 ველს და callback-ებს. ქვეკლასი ამატებს მხოლოდ მოთხოვნის მარშრუტს, რომელსაც ჩართული HttpProxyMiddleware მოიხმარს. ყოველი სურათის URL რჩება მის დანიშნულებად. ახალი საჯარო-სურათის მოთხოვნები პროქსის სერტიფიკატების გარეშე შეიძლება ისარგებლოს ჩანაწერით HTTP პროქსების სიიდან, როცა ეს მარშრუტი ნებადართულია.

გვერდის მოთხოვნები ინარჩუნებენ საკუთარ პოლიტიკას. გლობალური პროქსის გარემოში meta={'proxy': None} ამ ვერსიაში არჩეულ გვერდის მოთხოვნას პირდაპირს ხდის.

შეამოწმეთ, რომ ჩამოტვირთვა ნამდვილად გაიგზავნა. pipeline-ის ქეშის დაჭერა შეიძლება ქსელურ მოთხოვნას აარიდოს. ახალი გადაცემებისთვის შეადარეთ დასრულებული სურათების შედეგის ჩანაწერები მოთხოვნილ URL-ებს: წარმატებული ოპერაციები იქ ჩნდება, ხოლო წარუმატებლობამ შეიძლება საწყისი სურათის URL ველი სავსე დატოვოს. თვალი ადევნეთ დაკარგულ შედეგებს ჩამომტვირთავის ჟურნალებითა და არჩეული პროქსით.

დაკავშირებული სტატიები