Загрузка настроек прокси Scrapy в скрипт CrawlerProcess
Передайте get_project_settings() в CrawlerProcess, когда автономный запускающий скрипт должен использовать тот же загрузочный middleware, что и scrapy crawl.
Паук может использовать ожидаемый прокси под 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() не импортирует файл настроек проекта лишь потому, что скрипт также импортирует класс паука. Поэтому пользовательский middleware, включённый через DOWNLOADER_MIDDLEWARES, может отсутствовать в этом запуске.
Загрузка настроек даёт настроенные компоненты; она не придумывает адрес прокси. Промежуточному слою HTTP-прокси Scrapy по-прежнему нужен обычный прокси окружения или явное значение request.meta['proxy']. Проверьте, что HTTPPROXY_ENABLED его не отключил. Для разрешённого обхода публичных страниц список HTTP-прокси предлагает кандидатов для значения HTTP-прокси, передаваемого через эти метаданные или окружение.
Сравните загруженные настройки и активный middleware запускающего скрипта с запуском из командной строки. Если они совпадают, продолжайте с метаданными прокси выбранного запроса и фактической ошибкой передачи.