Scrapy-র ছবির অনুরোধে প্রক্সি সংযুক্ত করুন
ImagesPipeline যে Requests তৈরি করে সেগুলো সাজান, যাতে পাইপলাইনের অনুরোধ-লজিক পুনর্নির্মাণ না করেই ছবি ডাউনলোডে প্রক্সি মেলে।
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 ফিল্ড ও callback সংরক্ষিত থাকে। সাবক্লাস শুধু অনুরোধের রুট যোগ করে, যা সক্রিয় HttpProxyMiddleware ব্যবহার করে। প্রতিটি ছবির URL তার গন্তব্য হয়ে থাকে। প্রক্সি ক্রেডেনশিয়াল ছাড়া নতুন পাবলিক-ছবির অনুরোধ, রুটটি অনুমোদিত হলে HTTP প্রক্সি তালিকা থেকে একটি এন্ট্রি ব্যবহার করতে পারে।
পৃষ্ঠা অনুরোধ নিজের নীতি রাখে। গ্লোবাল প্রক্সি পরিবেশ থাকলে, এই রিলিজে meta={'proxy': None} নির্বাচিত পৃষ্ঠা অনুরোধকে সরাসরি করে।
ডাউনলোড সত্যিই শুরু হয়েছে কি না যাচাই করুন। পাইপলাইন ক্যাশ হিট নেটওয়ার্ক অনুরোধ এড়াতে পারে। নতুন ট্রান্সফারের জন্য সম্পন্ন-ছবির ফলাফল এন্ট্রিগুলো অনুরোধ করা URL-এর সাথে তুলনা করুন: সফল কাজগুলো সেখানে দেখা যায়, আর ব্যর্থতাগুলো মূল ছবি-URL ফিল্ড ভরা রেখে যেতে পারে। হারানো ফলাফল ডাউনলোডার লগ ও নির্বাচিত প্রক্সির মাধ্যমে অনুসরণ করুন।