scraper para extraer la información del catálogo de certificados de todofp.es
- Add discovery_spider.py to automatically discover all valid Grade C certificate IDs - Add gradoc_all_spider.py for complete extraction (certificate + UCs + MFs) - Add GradoCRelatedItem with fields for related certificates - Update run.py to register new spiders - Update README.md with new workflow documentation |
||
|---|---|---|
| todofp | ||
| .gitignore | ||
| gradoc.csv | ||
| gradoc_mfs.csv | ||
| gradoc_mfs_970-985.csv | ||
| gradoc_plain.csv | ||
| gradoc_plain_970-985.csv | ||
| gradoc_ucs.csv | ||
| gradoc_ucs_970-985.csv | ||
| pyproject.toml | ||
| README.md | ||
| scrapy.cfg | ||
todofp
Herramienta de web scraping construida con Scrapy para extraer información de los certificados de Grado C (técnico) de Formación Profesional del portal todofp.es, gestionado por el Ministerio de Educación de España.
Spiders disponibles
| Spider | Campos extraidos |
|---|---|
gradoc |
Datos básicos del certificado (código, descripción, familia profesional, nivel) |
gradoc_ucs |
Certificado + Unidades de Competencia |
gradoc_mfs |
Certificado + Módulos Formativos |
gradoc_plain |
Certificado + Unidades de Competencia + Módulos Formativos (completo) |
gradoc_all |
Igual que gradoc_plain pero con soporte para IDs descubiertos |
discovery |
Descubre automáticamente todos los IDs de certificados válidos |
Campos comunes a todos los spiders
| Campo | Descripción |
|---|---|
cert_id |
Identificador numérico del certificado (001–985) |
cert_code |
Código del certificado |
cert_description |
Nombre del certificado |
cert_grade |
Grado (C = técnico) |
cert_level |
Nivel del certificado |
family_code |
Código de la familia profesional |
family_description |
Nombre de la familia profesional |
Requisitos previos
- Python 3.11 o superior
- pip (gestor de paquetes de Python)
Instalación
pip install .
En modo desarrollo:
pip install -e .
Uso rápido
Tras instalar, ejecutar directamente desde cualquier directorio:
todofp gradoc -o gradoc.csv
todofp gradoc_ucs -s 100 -e 200 -o gradoc_ucs.csv
todofp gradoc_mfs -o gradoc_mfs.csv
todofp gradoc_plain -o gradoc_plain.csv
Flujo de trabajo completo: descubrir y extraer todos los certificados
# Paso 1: Descubrir todos los IDs de certificados válidos
todofp discovery -s 1 -e 1200
# Paso 2: Extraer todos los datos de los certificados descubiertos
todofp gradoc_all -s 1 -e 985 -o todos_los_certificados.csv
Opciones
| Opción | Descripción | Valor por defecto |
|---|---|---|
-s, --start |
ID del primer certificado a extraer | 1 |
-e, --end |
ID del último certificado a extraer | 985 |
-o, --output |
Fichero de salida (CSV) | (salida a stdout) |
-u, --urlbase |
URL base del sitio web | https://www.todofp.es |
Uso con Scrapy
También se pueden ejecutar los spiders directamente con scrapy crawl:
scrapy crawl gradoc -O gradoc.csv
scrapy crawl gradoc_ucs -a start=100 -a end=200 -O gradoc_ucs.csv
Nota: El parámetro
-Osobreescribe el fichero de salida. Usar-opara añadir datos sin sobreescribir.
Estructura del proyecto
todofp/
├── scrapy.cfg
├── pyproject.toml
├── README.md
├── todofp/
│ ├── __init__.py
│ ├── items.py # Definiciones de items Scrapy
│ ├── run.py # CLI simplificado
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders/
│ ├── __init__.py
│ ├── base.py # Clase base con lógica común
│ ├── gradoc_spider.py
│ ├── gradoc_ucs_spider.py
│ ├── gradoc_mfs_spider.py
│ ├── gradoc_plain_spider.py
│ ├── gradoc_all_spider.py # Extracción completa
│ └── discovery_spider.py # Descubrimiento de IDs
└── *.csv
Notas
- El sitio web todofp.es establece un límite de 1 solicitud por segundo (
DOWNLOAD_DELAY = 1ensettings.py), lo que hace que la extracción completa de ~985 certificados tarde aproximadamente 15–20 minutos por spider. - Se recomienda ejecutar los spiders con
ROBOTSTXT_OBEY = True(activado por defecto) para respetar las normas del sitio. - El spider
discoverygenera un ficherodiscovery_result.jsoncon todos los IDs encontrados y sus datos básicos.