Cargar la configuración de proxy de Scrapy en un script de CrawlerProcess
Pasa get_project_settings() a CrawlerProcess cuando un lanzador independiente deba usar el mismo middleware de descarga que scrapy crawl.
Una araña puede usar el proxy esperado con scrapy crawl e ir directamente cuando la lanza un script de Python. Comprueba cómo construye sus ajustes ese script antes de cambiar el servidor proxy.
Para un proyecto Scrapy existente y su araña registrada:
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()
Sustituye catalog por el nombre de la araña del proyecto. El proyecto debe ser detectable mediante su scrapy.cfg o mediante un SCRAPY_SETTINGS_MODULE bien definido que apunte a un módulo de ajustes importable.
Crear solo CrawlerProcess() no importa el archivo de ajustes del proyecto por el mero hecho de que el script también importe una clase de araña. Por eso, un middleware personalizado habilitado por DOWNLOADER_MIDDLEWARES puede faltar en esa ejecución.
Cargar los ajustes aporta los componentes configurados; no inventa una dirección de proxy. El middleware de proxy HTTP de Scrapy sigue necesitando su proxy de entorno habitual o un valor explícito de request.meta['proxy']. Comprueba que HTTPPROXY_ENABLED no lo haya desactivado. Para un rastreo permitido de páginas públicas, la lista de proxies HTTP ofrece candidatos para un valor de proxy HTTP suministrado mediante esos metadatos o el entorno.
Compara los ajustes cargados y el middleware activo del lanzador con la ejecución por línea de comandos. Si coinciden, continúa con los metadatos de proxy de la solicitud seleccionada y el error de transporte real.