from parsers import groups_parser, student_list_parser, student_parser from models import Student, Group, Discipline, Task, Mark baseUrl = 'http://imcs.dvfu.ru/works/' session = requests.Session() groups = list( map(lambda x: Group.create_or_get(**x)[0], groups_parser(session.get(baseUrl + 'students').content))) print('Found {} groups'.format(len(groups))) for group in groups: data = {'group': group.id, 'student_name': '', 'do_select': 'Выбрать'} students = list( map( lambda x: Student.create_or_get(**x)[0].groups.add(group), student_list_parser( session.post(baseUrl + 'students', data=data).content))) sys.stdout.write('\rFound {} students in {}'.format( len(students), group.name)) students = Student.select() sys.stdout.write('\rFound {} students\n'.format(len(students))) count = 0 for student in students: for disciplineDict in student_parser( session.get(baseUrl + 'marks_student?id={}'.format(student.id)).content): tasks = disciplineDict.pop('tasks') (discipline, _) = Discipline.create_or_get(**disciplineDict)