Incluir y cargar una lista de proxies en un proyecto Scrapy desplegado
Incluya un recurso de lista de proxies de Scrapy en la distribución y cárguelo por la ubicación del paquete en lugar del directorio de trabajo desplegado.
Un archivo de proxies junto a una copia de desarrollo no está presente automáticamente en el paquete desplegado del rastreador. Hay dos tareas: incluir los bytes en la distribución y luego encontrarlos en el paquete instalado.
Para un proyecto Setuptools con crawl_app/resources/proxies.txt dentro de su paquete Python, una entrada en pyproject.toml puede incluirlo:
[tool.setuptools.package-data]
crawl_app = ["resources/*.txt"]
Combínelo con la configuración de paquete existente del proyecto. Otro backend de compilación tiene su propia interfaz de inclusión de datos.
Para el middleware que puede consumir cadenas de endpoint, Python 3.11+ puede leer el recurso del paquete directamente:
from importlib.resources import files
text = files('crawl_app').joinpath('resources', 'proxies.txt').read_text(
encoding='utf-8'
)
proxy_urls = [line.strip() for line in text.splitlines() if line.strip()]
Utilice el nombre real del paquete y valide el formato de URL esperado en el lector. Para datos de endpoint públicos distribuibles, utilice direcciones de la lista de proxies gratuitos en el protocolo y el formato de URL que espera el middleware. La búsqueda no depende del directorio de trabajo actual del despliegue.
Un ajuste PROXY_LIST de terceros puede requerir una ruta del sistema de archivos en lugar de estas cadenas. Al usar importlib.resources.as_file para esa interfaz, mantenga su contexto abierto mientras el middleware necesite el archivo extraído. Devolver una ruta temporal tras cerrar el contexto puede perder el recurso.
Mantenga las listas de producción con credenciales en el almacenamiento de secretos o configuración previsto para el despliegue. Los datos del paquete son adecuados para datos de endpoint distribuibles, no para suponer que todo lo empaquetado con código permanece privado.