একটি স্পাইডার scrapy crawl-এর অধীনে প্রত্যাশিত প্রক্সি ব্যবহার করতে পারে, কিন্তু Python স্ক্রিপ্ট থেকে চালু হলে সরাসরি চলে যায়। প্রক্সি সার্ভার বদলানোর আগে ওই স্ক্রিপ্ট কীভাবে তার সেটিংস তৈরি করে দেখুন।

একটি বিদ্যমান Scrapy প্রকল্প ও তার নিবন্ধিত স্পাইডারের জন্য:

from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings

settings = get_project_settings()
process = CrawlerProcess(settings=settings)
process.crawl('catalog')
process.start()

catalog-কে প্রকল্পের স্পাইডারের নাম দিয়ে বদলান। প্রকল্পটি তার scrapy.cfg-এর মাধ্যমে, অথবা আমদানযোগ্য সেটিংস মডিউলে নির্দেশ করা সঠিকভাবে সেট SCRAPY_SETTINGS_MODULE-এর মাধ্যমে আবিষ্কারযোগ্য হতে হবে।

কেবল CrawlerProcess() তৈরি করলে প্রকল্পের সেটিংস ফাইল আমদানি হয় না, শুধু স্ক্রিপ্ট স্পাইডার ক্লাসও আমদানি করে বলে নয়। ফলে DOWNLOADER_MIDDLEWARES দ্বারা সক্রিয় একটি কাস্টম মিডলওয়্যার ওই রান থেকে অনুপস্থিত থাকতে পারে।

সেটিংস লোড করলে কনফিগার করা উপাদানগুলো সরবরাহ হয়; এটি প্রক্সি ঠিকানা বানায় না। Scrapy-র HTTP প্রক্সি মিডলওয়্যারের এখনও স্বাভাবিক পরিবেশ প্রক্সি বা স্পষ্ট request.meta['proxy'] মান দরকার। HTTPPROXY_ENABLED এটি নিষ্ক্রিয় করেনি কি না দেখুন। অনুমোদিত পাবলিক পৃষ্ঠা ক্রলের জন্য HTTP প্রক্সি তালিকা ওই মেটাডেটা বা পরিবেশের মাধ্যমে দেওয়া HTTP প্রক্সি মানের প্রার্থী জোগায়।

লঞ্চারের লোড করা সেটিংস ও সক্রিয় মিডলওয়্যার কমান্ড-লাইন রানের সঙ্গে তুলনা করুন। মিলে গেলে নির্বাচিত অনুরোধের প্রক্সি মেটাডেটা ও প্রকৃত পরিবহন ত্রুটি নিয়ে এগিয়ে যান।

সম্পর্কিত নিবন্ধ