def getGrades(user, jwxt_user): gradesStr = jwxt_user.getScore() pattern = pattern = re.compile(r'\{"[^\}]*"\}') results = pattern.finditer(gradesStr) for item in results: grade = item.group() try: lessonIdPattern = re.compile(r'(?<="kch":")([^"]+?)(?=")') lessonId = lessonIdPattern.search(grade).group() teacherPattern = re.compile(r'(?<="jsxm":")([^"]+?)(?=")') try: teacher = teacherPattern.search(grade).group() except: teacher = '' lesson = Lesson.objects.get(lessonId=lessonId, teacher=teacher) except Lesson.DoesNotExist: schoolNumber = lessonId[:5] try: schoolObj = School.objects.get(number=schoolNumber) except: schoolObj = School.objects.get(number='69000') titlePattern = re.compile(r'(?<="kcmc":")([^"]+?)(?=")') title = titlePattern.search(grade).group() classHour = 'None' creditPattern = re.compile(r'(?<="xf":")([^"]+?)(?=")') try: credit = creditPattern.search(grade).group() except: credit = '0' campus = '' teachType = '01' typePattern = re.compile(r'(?<="kclb":")([^"]+?)(?=")') type = typePattern.search(grade).group() lesson = Lesson(school=schoolObj, lessonId=lessonId, title=title, description='', classHour=classHour, credit=credit, campus=campus, teacher=teacher[:128], teachType=teachType, type=type ) lesson.save() yearPattern = re.compile(r'(?<="xnd":")([^"]+?)(?=")') try: year = yearPattern.search(grade).group() except: year = 'unknow' scorePattern = re.compile(r'(?<="zzcj":")([^"]+?)(?=")') try: score = int(scorePattern.search(grade).group()) except: continue rankPattern = re.compile(r'(?<="jxbpm":")([^"]+?)(?=")') try: rank = rankPattern.search(grade).group() except: ranking = int total = int else: rank_list = map(int, re.findall(r'\d+', rank)) try: ranking = rank_list[0] total = rank_list[1] except: ranking = int total = int termPattern = re.compile(r'(?<="xq":")([^"]+?)(?=")') try: term = termPattern.search(grade).group() except: term = '4' try: gradeObj = Grade.objects.get(user=user, lesson=lesson) except Grade.DoesNotExist: gradeObj = Grade( user=user, lesson=lesson, year=year, term=term, score=score, ranking=ranking, total=total ) gradeObj.save() lesson.add_grade_number() lesson.save()