def main(saveMethods=DEFAULT_SAVE_METHODS) -> None: logInfo("----- МГУ (Магистратура) -----") if len(saveMethods) == 0: logWarning("Пустой список методов сохранения.") logInfo("Начат поиск конкурсов.") contestLinks = findContestLinks() logInfo("Конкурсов найдено: %d. Начат поиск поступающих." % len(contestLinks)) linkToAbits = findAbitsAsync(contestLinks) logInfo("Найдено записей: %d. Готово." % sum(map(len, linkToAbits.values()))) for saveMethod in saveMethods: saveMethod(linkToAbits, "msu-mag") logInfo("Сохранено.")
def _writeJson(jsonData: Union[dict, list], dirName: str, fileName: str) -> None: dirName = "output/" + dirName if not os.path.exists(dirName): os.makedirs(dirName) fileName = "output/" + dirName + urllib.parse.quote_plus(fileName).replace( "\\", "/") suffixName = fileName[fileName.rfind("/") + 1:] if len(suffixName) > 255: # Ограничение Windows suffixName = suffixName[-255:] fileName = dirName + suffixName with open(fileName, "w", encoding="utf-8") as outputFile: print(json.dumps(jsonData, ensure_ascii=False, indent=2), file=outputFile) logInfo("JSON файл '%s' записан." % fileName)
def main(saveMethods=DEFAULT_SAVE_METHODS) -> None: logInfo("----- РГГУ (Магистратура) -----") if len(saveMethods) == 0: logWarning("Пустой список методов сохранения.") logInfo("Начат поиск бюджетников.") linkToAbitsBudget = parseSite(RGGU_SITE_BUDGET, {PROPERTY.FOR_MONEY: False}) logInfo("Бюджетных конкурсов найдено: %d. Начат поиск контрактников." % len(linkToAbitsBudget)) linkToAbitsContract = parseSite(RGGU_SITE_CONTRACT, {PROPERTY.FOR_MONEY: True}) logInfo("Контрактных конкурсов найдено: %d. Начато слитие конкурсов." % len(linkToAbitsContract)) linkToAbits = {**linkToAbitsBudget, **linkToAbitsContract} logInfo("Найдено записей: %d. Готово." % sum(map(len, linkToAbits.values()))) for saveMethod in saveMethods: saveMethod(linkToAbits, "rggu-mag") logInfo("Сохранено.")
def parseSite(link: str, additionalParameters: dict) -> dict: contestLinks = findContestLinks(link) logInfo("Конкурсов найдено: %s." % len(contestLinks)) return findAbitsAsync(contestLinks, additionalParameters)
def main(department: Optional[str] = None, saveMethods=DEFAULT_SAVE_METHODS): logInfo("----- РАНХиГС (Магистратура) -----") if len(saveMethods) == 0: logWarning("Пустой список методов сохранения.") logInfo("Начат поиск филиалов.") departmentToLink, count = findDepartmentToLink(RANEPA_SITE) if department is not None: departmentToLink = {department: departmentToLink[department]} count = 1 logInfo("Филиалов найдено: %s. Начат поиск направлений." % count) departmentToSpecialityToLink, count = findDepartmentToSpecialityToLink( departmentToLink) logInfo("Направлений найдено: %s. Начат поиск форм." % count) departmentToSpecialityToFormToLink, count = findDepartmentToSpecialityToFormToLink( departmentToSpecialityToLink) logInfo("Форм найдено: %s. Начат поиск образовательных программ." % count) departmentToSpecialityToFormToEducationalProgramToLink, count = findDepartmentToSpecialityToFormToEducationalProgramToLink( departmentToSpecialityToFormToLink) logInfo("Образовательных программ найдено: %s. Начат поиск абитуриентов." % count) linkToAbits, count = findLinkToAbit( departmentToSpecialityToFormToEducationalProgramToLink) logInfo("Найдено записей: %s. Готово." % count) for saveMethod in saveMethods: saveMethod(linkToAbits, "ranepa-mag") logInfo("Сохранено.")
def parseSpbu(contests: Optional[Set[str]], saveMethods, spbuSite: str, name: str, saveDir: str) -> None: logInfo("----- %s -----" % name) if len(saveMethods) == 0: logWarning("Пустой список методов сохранения.") if contests is None: logInfo("Поиск конкурсов.") contests = findContests(spbuSite) # { contestId } logInfo("Найдено конкурсов: %d." % len(contests)) contestLinks = addPrefixLinkToContests(spbuSite, contests) linkToAbits = findContestListsAsync(contestLinks) # contestPage: { abit } logInfo("Обработано конкурсов: %d." % len(linkToAbits)) logInfo("Найдено записей: %d. Готово." % sum(map(len, linkToAbits.values()))) for saveMethod in saveMethods: saveMethod(linkToAbits, saveDir) logInfo("Сохранено.")