პროქსის მიბმა Scrapy-ის სურათების მოთხოვნებზე
გააფორმეთ ImagesPipeline-ის მიერ შექმნილი Requests, რათა სურათების ჩამოტვირთვამ პროქსი მიიღოს pipeline-ის მოთხოვნის ლოგიკის ხელახლა აშენების გარეშე.
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 ველი სავსე დატოვოს. თვალი ადევნეთ დაკარგულ შედეგებს ჩამომტვირთავის ჟურნალებითა და არჩეული პროქსით.