Example #1
0
        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 != "&nbsp;")
                    {
                        #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;
        }
Example #2
0
        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;
        }