Scrapy ਪ੍ਰੌਕਸੀ ਸੈਟਿੰਗਾਂ ਨੂੰ CrawlerProcess ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਲੋਡ ਕਰੋ
ਜਦੋਂ ਇੱਕ ਸੁਤੰਤਰ ਲਾਂਚਰ ਨੂੰ scrapy crawl ਵਾਂਗ ਹੀ ਡਾਊਨਲੋਡਰ ਮਿਡਲਵੇਅਰ ਵਰਤਣਾ ਹੋਵੇ ਤਾਂ get_project_settings() ਨੂੰ CrawlerProcess ਨੂੰ ਦਿਓ।
ਸਪਾਈਡਰ 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 ਪ੍ਰੌਕਸੀ ਮੁੱਲ ਲਈ ਉਮੀਦਵਾਰ ਦਿੰਦੀ ਹੈ।
ਲਾਂਚਰ ਦੀਆਂ ਲੋਡ ਕੀਤੀਆਂ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸਰਗਰਮ ਮਿਡਲਵੇਅਰ ਦੀ ਕਮਾਂਡ-ਲਾਈਨ ਰਨ ਨਾਲ ਤੁਲਨਾ ਕਰੋ। ਜੇ ਉਹ ਮੇਲ ਖਾਂਦੇ ਹਨ, ਤਾਂ ਚੁਣੇ ਗਏ ਬੇਨਤੀ ਦੇ ਪ੍ਰੌਕਸੀ ਮੈਟਾਡੇਟਾ ਅਤੇ ਅਸਲ ਟਰਾਂਸਪੋਰਟ ਗਲਤੀ ਨਾਲ ਅੱਗੇ ਵਧੋ।