Descripción del proyecto
TraducidoIgualmente importante es lo que sucede después de que se carga la página. El HTML en bruto necesita convertirse en registros verificados y deduplicados, y los precios, fechas y números de teléfono deben normalizarse a formatos uniformes antes de llegar a la base de datos. Tiene sentido almacenar solo datos nuevos o cambiados, por lo que necesitamos lógica incremental. Más allá de eso, la transparencia operativa es importante para nosotros: un panel que muestre las tasas de éxito y volúmenes de ejecución, notificaciones de fallos y anomalías de datos, y un despliegue reproducible que se pueda iniciar desde cero sin conocimiento tribal.
Los sitios web específicos objetivo son confidenciales y se comparten bajo NDA después de que se acuerden los términos. En su respuesta, hable sobre qué protecciones anti-bot ha encontrado y cómo mantuvo estable el analizador a lo largo del tiempo. Alcance completo del trabajo a continuación.
1. Arquitectura del scraper
— Scrapy + rotación de proxies y pool de User-Agent
— Playwright/Selenium para sitios JS
— Bypass de CAPTCHA (2captcha / anti-captcha)
— Limitación de tasa, cumplimiento de robots.txt
2. Canalización de datos
— HTML a JSON estructurado
— Validación y deduplicación
— Normalización de precios, fechas, números de teléfono
— Almacenamiento en PostgreSQL con diseño de esquema
— Actualizaciones incrementales (solo registros nuevos/cambiados)
3. Monitoreo y operaciones
— Panel: éxito de ejecución, conteos de registros, errores
— Alertas de Slack/correo electrónico sobre fallos
— Despliegue de Docker Compose
— Programación de Cron con lógica de reintento
Sitios web objetivo
— Confidencial (NDA) — detalles después del acuerdo
— Mezcla de sitios estáticos y SPA
Entregables
— Código fuente con pruebas
— Configuración de Docker Compose
— Migraciones de esquema de base de datos
— Runbook y configuración de monitoreo