Паук может использовать ожидаемый прокси под 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 запускающего скрипта с запуском из командной строки. Если они совпадают, продолжайте с метаданными прокси выбранного запроса и фактической ошибкой передачи.

Похожие статьи