|
1 | | -# Web Scrapper de servidorespublicos.gob.mx |
| 1 | +# Auto-Servidores |
2 | 2 |
|
3 | | -Un script de Python que consulta y verifica si los servidores públicos tienen declaración anual actualizada. |
| 3 | +Herramienta Python para consultar de forma masiva el API de DeclaraNet y verificar si los servidores públicos tienen declaraciones anuales actualizadas. |
4 | 4 |
|
5 | 5 | ## Requisitos |
6 | 6 |
|
7 | | -* Python 3.10 |
8 | | -* Última versión de Chrome |
9 | | -* Windows (Linux pendiente) |
| 7 | +- **Python 3.13** |
| 8 | +- Windows, Linux o macOS |
10 | 9 |
|
11 | | -## Uso del script |
| 10 | +## Instalación |
12 | 11 |
|
13 | | -1. Instala las librerías: |
14 | | -` |
15 | | -pip install -r requirements.txt |
16 | | -` |
| 12 | +1. Clona el repositorio y entra al directorio: |
| 13 | + ```bash |
| 14 | + git clone <url-del-repo> |
| 15 | + cd auto-servidores |
| 16 | + ``` |
17 | 17 |
|
18 | | -2. Coloca tus archivos Excel de origen dentro de la carpeta /seed, la 1ª columna debe ser "Nombres", la 2ª debe ser "RFC", de lo contrario fallará |
| 18 | +2. Crea un entorno virtual (recomendado): |
| 19 | + ```bash |
| 20 | + python -m venv venv |
| 21 | + source venv/bin/activate # Linux/macOS |
| 22 | + venv\Scripts\activate # Windows |
| 23 | + ``` |
19 | 24 |
|
20 | | -3. Ejecuta: |
21 | | -` |
22 | | -python .\main.py |
23 | | -` |
| 25 | +3. Instala las dependencias: |
| 26 | + ```bash |
| 27 | + pip install -r requirements.txt |
| 28 | + ``` |
24 | 29 |
|
25 | | -## Cómo funciona |
26 | | -El script lee los nombres y RFCs desde seed.xlsx, navega al sitio web de servidorespublicos.gob.mx, e intenta encontrar y descargar los documentos de declaración anual de cada servidor público listado. Utiliza Chrome en modo headless para navegar el sitio, lo que significa que Chrome se ejecuta en segundo plano sin una ventana visible. |
| 30 | +Para desarrollo y pruebas, instala también: |
| 31 | +```bash |
| 32 | +pip install -r requirements-dev.txt |
| 33 | +``` |
| 34 | + |
| 35 | +## Uso |
| 36 | + |
| 37 | +### Modo GUI (recomendado) |
| 38 | + |
| 39 | +```bash |
| 40 | +python gui.py |
| 41 | +``` |
| 42 | + |
| 43 | +Abre una interfaz gráfica donde puedes: |
| 44 | +- Arrastrar o seleccionar archivos Excel de origen |
| 45 | +- Ajustar tamaño de lote, trabajadores máximos y parámetros de rate limit |
| 46 | +- Ver logs en tiempo real y barra de progreso |
| 47 | + |
| 48 | +### Modo headless (sin GUI) |
| 49 | + |
| 50 | +```bash |
| 51 | +python main.py --no-gui |
| 52 | +``` |
| 53 | + |
| 54 | +## Formato de archivos de origen |
| 55 | + |
| 56 | +Coloca tus archivos Excel (`.xlsx`) dentro de la carpeta `seed/`. |
| 57 | + |
| 58 | +**No deben tener fila de encabezado.** La primera columna debe contener los nombres y la segunda columna los RFCs. |
| 59 | + |
| 60 | +| A | B | |
| 61 | +|---|---| |
| 62 | +| JUAN PEREZ GARCIA | BEGX123456X01 | |
| 63 | +| MARIA LOPEZ HDEZ | BEGX654321X02 | |
| 64 | + |
| 65 | +## Configuración |
| 66 | + |
| 67 | +Todos los parámetros son configurables desde `config.yaml`: |
| 68 | + |
| 69 | +- `api.base_url`: URL base del servicio DeclaraNet |
| 70 | +- `api.max_retries` / `api.retry_base_delay`: Reintentos y espera exponencial |
| 71 | +- `rate_limit.max_concurrent`: Conexiones simultáneas máximas |
| 72 | +- `rate_limit.min_interval`: Intervalo mínimo entre requests |
| 73 | +- `rate_limit.cooldown_base` / `cooldown_max`: Backoff exponencial al recibir 429 |
| 74 | +- `processing.batch_size`: Tamaño de lote para leer del Excel |
| 75 | +- `processing.max_workers`: Tareas concurrentes máximas |
| 76 | +- `output.dir`: Carpeta de salida (por defecto `output/`) |
27 | 77 |
|
28 | 78 | ## Salida |
29 | | -El script creará dos archivos Excel: |
30 | 79 |
|
31 | | -ENCONTRADAS.xlsx: Contiene los detalles de los servidores públicos cuyas declaraciones fueron encontradas y descargadas exitosamente. |
32 | | -NO_ENCONTRADAS.xlsx: Contiene los detalles de los servidores públicos cuyas declaraciones no fueron encontradas. |
33 | | -Cada archivo incluirá los nombres, RFCs y otros detalles relevantes extraídos durante el proceso de scraping. |
| 80 | +El programa genera dos archivos Excel por cada archivo de origen: |
| 81 | + |
| 82 | +- `{nombre}_ENCONTRADOS.xlsx`: Servidores con declaraciones encontradas |
| 83 | +- `{nombre}_NO_ENCONTRADOS.xlsx`: Servidores no encontrados o sin declaración |
| 84 | + |
| 85 | +Los archivos se guardan en la carpeta configurada en `output.dir`. |
| 86 | + |
| 87 | +## Caché |
| 88 | + |
| 89 | +Las respuestas del API se almacenan en SQLite (`.cache/api_cache.db`) con TTL configurable. Esto acelera re-ejecuciones y reduce la carga sobre el servidor. |
| 90 | + |
| 91 | +## Tests |
| 92 | + |
| 93 | +```bash |
| 94 | +pytest tests/ -v |
| 95 | +``` |
| 96 | + |
| 97 | +## Licencia |
| 98 | + |
| 99 | +Uso interno. El proyecto consulta datos públicos de servidores públicos mexicanos a través de la plataforma DeclaraNet. |
0 commit comments