La información en bruto de buscacursos en la palma de tu mano.
Un scraper simple basado en la implementación de ramos-uc.
Los datos pre-scrapeados de buscacursos están disponibles para descargar en releases como un .json
gigante para cada semestre (datos del 2021 y el 2022).
Para correr el scraper basta con clonar el repositorio y correr:
python3 main.py 2022-2 2022-1 2021-2 > courses.json 2> log.txt
Notar que el scraper puede tomar varias horas en descargar todos los ramos.
Un ejemplo con comentarios:
{
// Datos de un semestre (puede haber mas de un semestre en un mismo archivo)
"2022-2": {
// Datos de un ramo (con varias secciones)
"IEE2713": {
"name": "Sistemas Digitales",
"credits": 10,
// Requerimientos en terminos de que ramos hay que tomar antes
"req": "MAT1202 o MAT1203",
// Ver ejemplo mas adelante
"conn": "No tiene",
"restr": "No tiene",
"equiv": "No tiene",
// Descripcion del curso
"program": "CURSO: SISTEMAS DIGITALES...",
// Facultad
"school": "Ingeniería",
// Ver ejemplo mas adelante
"area": "",
"category": "",
// Secciones del ramo en el semestre dado
"sections": {
// Los numeros de seccion son strings, porque pueden haber "hoyos"
// (ie. que exista la seccion 2 pero no la 1)
"1": {
// Unico para cada (ramo, seccion)
"nrc": "10962",
"teachers": "Cristian Garces",
"schedule": {
// Martes y Jueves 2do modulo, clase en la sala BC25
"m2": ["CLAS", "BC25"],
"j2": ["CLAS", "BC25"],
// Ayudantia Miercoles 6to modulo en la sala BC25
"w6": ["AYU", "BC25"]
},
// Presencial, hibrido o remoto
"format": "Presencial",
"campus": "San Joaquin",
"is_english": false,
// Es botable?
"is_removable": true,
// ?
"is_special": false,
// Cupos totales para la seccion
"total_quota": 60,
// Cupos disponibles al momento de scrapear (informacion inutil)
"available_quota": 11
}
}
},
"ICS3413": {
"name": "Finanzas",
// Este ramo se puede tomar si tomaste ICS2613 *o* si has aprobado 300 creditos o mas
"req": "ICS2613", // requirements
"conn": "o", // connector
"restr": "(Creditos >= 300)" // restrictions
"equiv": "(ICS3532)", // equivalencies
// ... omitidos por brevedad ...
},
"SUS1000": {
// Quizas para los OFG?
"area": "Ecolog Integra y Sustentabilidad",
"category": "Aprendizaje Servicio",
// ... omitidos por brevedad ...
},
"TSL596": {
// Requiere que la carrera sea distinta a "Trabajo Social"
"restr": "(Carrera <> Trabajo Social)"
// ... omitidos por brevedad ...
}
}
}