private static string GetJsonData(HtmlNode allWeekCourseNode, List<Course> courseList) { Course emptyCourse = new Course(); List<WeeklyCourse> allCourseData = new List<WeeklyCourse>(); DailyCourse dailyCourse = new DailyCourse(); foreach (var weekly in allWeekCourseNode.SelectNodes("tr").Skip(2)) { WeeklyCourse weeklyCourse = new WeeklyCourse(); foreach (var course in weekly.SelectNodes("td").Skip(1)) { if (course.InnerHtml != " ") { #region One int length = 1; foreach (var item in course.Attributes) { if (item.Name == "colspan") length = Convert.ToInt32(item.Value); } // 有课 if (course.InnerHtml.Contains("<br>") && courseList.Exists(p => p.Code == course.FirstChild.InnerHtml.Trim())) { Course myCourse = courseList.First(p => p.Code == course.FirstChild.InnerHtml.Trim()); Course currentCourse = new Course() { ClassRoom = course.LastChild.InnerHtml, Code = myCourse.Code, Credit = myCourse.Credit, Name = myCourse.Name, Teacher = myCourse.Teacher, Type = myCourse.Type, ClassHours = myCourse.ClassHours }; while (length-- > 0) { dailyCourse.DailyList.Add(currentCourse); } } else { Course currentCourse = new Course(); currentCourse.Name = course.InnerHtml; while (length-- > 0) { dailyCourse.DailyList.Add(currentCourse); } } #endregion } else { dailyCourse.DailyList.Add(emptyCourse); } if (dailyCourse.DailyList.Count == 12) { weeklyCourse.WeeklyList.Add(dailyCourse); dailyCourse = new DailyCourse(); } } allCourseData.Add(weeklyCourse); } var obj = new { Data = allCourseData, Length = allCourseData.Count }; string thisTirm = JsonConvert.SerializeObject(obj); return thisTirm; }
private static List<Course> GetCoursees(HtmlNode innerHtml) { List<Course> classes = new List<Course>(); string classTitle = innerHtml.FirstChild.InnerHtml.Trim(); //ParseTitle string firstCode = classTitle.Substring(1, classTitle.IndexOf(')') - 1); string credit = classTitle.Substring(classTitle.LastIndexOf('[') + 1, classTitle.LastIndexOf(']') - classTitle.LastIndexOf('[') - 1); string name = classTitle.Substring(classTitle.IndexOf(')') + 1, classTitle.LastIndexOf('(') - classTitle.IndexOf(')') - 1).Trim(); var list = innerHtml.ChildNodes.Skip(1).Where(p => p.InnerHtml.Trim() != ""); foreach (var item in list) { string classDescribe = item.InnerHtml.Trim(); string lastCode = classDescribe.Substring(classDescribe.IndexOf('-') + 1, 1) + classDescribe.Substring(classDescribe.IndexOf('(') - 1, 1); string type = classDescribe.Substring(classDescribe.IndexOf('[') + 1, 1); Match match = Regex.Match(classDescribe, @"师\[(.+?)\]"); string teacher = match.Groups[1].Value; match = Regex.Match(classDescribe, @"时\[(.+?)\]"); int hours = Convert.ToInt32(match.Groups[1].Value); Course myCourse = new Course() { Code = firstCode + lastCode, Name = name, Credit = Convert.ToSingle(credit), Teacher = teacher, Type = type, ClassHours = hours }; classes.Add(myCourse); } return classes; }