إرفاق الوكيل بطلبات الصور في Scrapy
زيّن كائنات Requests التي تنشئها ImagesPipeline كي تحصل تنزيلات الصور على وكيل دون إعادة بناء منطق الطلبات في الأنبوب.
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، استبدل مدخل ImagesPipeline القياسي في ITEM_PIPELINES بمسار الاستيراد لهذه الفئة الفرعية. أبقِ IMAGES_STORE والإعدادات الأخرى.
استدعاء الفئة الأصلية يحفظ حقل عنوان URL للصور والمعاودات التي ضُبطت فيه. تضيف الفئة الفرعية مسار الطلب فقط، وهو ما تستهلكه HttpProxyMiddleware الممكّنة. يبقى كل عنوان URL للصورة وجهته. يمكن لطلبات الصور العامة الجديدة التي لا تحمل بيانات اعتماد وكيل استخدام مدخل من قائمة وكلاء HTTP عندما يُسمح بذلك المسار.
تحتفظ طلبات الصفحات بسياساتها الخاصة. مع بيئة وكيل عامة، يجعل meta={'proxy': None} طلب صفحة محددة مباشراً في هذا الإصدار.
تحقق من أن التنزيل قد صدر فعلاً. قد تتجنب إصابة ذاكرة الأنبوب المؤقتة طلب شبكة. بالنسبة للنقل الجديد، قارن مدخلات نتيجة الصورة المكتملة بعناوين URL المطلوبة: تظهر العمليات الناجحة هناك، بينما يمكن أن تترك حالات الفشل حقل عنوان URL الأصلي ممتلئاً. تتبّع النتائج المفقودة عبر سجلات أداة التنزيل والوكيل المختار.