예제 #1
0
        // Schedule_W에서 Schedule로 변환
        private Schedule ConvertToSchedule(Schedule_W schedule_W)
        {
            Schedule schedule = new Schedule
            {
                Year     = schedule_W.Year,
                Month    = schedule_W.Month,
                Day      = schedule_W.Day,
                BallPark = schedule_W.BallPark,
                Etc      = schedule_W.Etc
            };

            schedule.Hour   = Convert.ToInt32(schedule_W.Time.Substring(0, 2));
            schedule.Minute = Convert.ToInt32(schedule_W.Time.Substring(3, 2));

            HtmlDocument doc = new HtmlDocument();

            doc.LoadHtml(schedule_W.Play);
            var nodes = doc.DocumentNode.SelectNodes("span");

            schedule.AwayTeam = Util.Util.GetTeamInitialFromName(nodes[0].InnerHtml);
            schedule.HomeTeam = Util.Util.GetTeamInitialFromName(nodes[1].InnerHtml);

            if (schedule_W.Etc == "-")
            {
                // 경기가 진행되었으면
                nodes = doc.DocumentNode.SelectNodes("em/span");
                schedule.AwayTeamScore = Convert.ToInt32(nodes[0].InnerHtml);
                schedule.HomeTeamScore = Convert.ToInt32(nodes[2].InnerHtml);

                doc.LoadHtml(schedule_W.Relay);
                schedule.Href = doc.DocumentNode.SelectSingleNode("a").GetAttributeValue("href", "");

                try
                {
                    schedule.GameId   = schedule.Href.Split(new char[] { '&', '=' })[5];
                    schedule.LeagueId = Convert.ToInt32(schedule.Href.Split(new char[] { '&', '=' })[1]);
                    schedule.SeriesId = Convert.ToInt32(schedule.Href.Split(new char[] { '&', '=' })[3]);
                }
                catch (Exception)
                {
                    return(null);
                }
            }
            return(schedule);
        }
예제 #2
0
        public List <Schedule> Parse(String html, Int32 year, Int32 month)
        {
            HtmlDocument doc = new HtmlDocument();

            doc.LoadHtml(html);
            var             nodes     = doc.DocumentNode.SelectNodes("//tbody//tr");
            List <Schedule> schedules = new List <Schedule>();

            Int32 currentMonth = 0;
            Int32 currrntDay   = 0;

            foreach (var node in nodes)
            {
                String day = GetDay(node);
                if (day != null)
                {
                    currentMonth = Convert.ToInt32(day.Substring(0, 2));
                    currrntDay   = Convert.ToInt32(day.Substring(3, 2));
                    if (currentMonth != month)
                    {
                        throw new OpenQA.Selenium.StaleElementReferenceException("페이지가 완전히 로드되지 않았습니다.");
                    }
                }

                if (currentMonth != 0 && currrntDay != 0)
                {
                    Schedule_W schedule_W = CreateSchedule_WFromNode(node, year, currentMonth, currrntDay);
                    if (schedule_W != null)
                    {
                        Schedule schedule = ConvertToSchedule(schedule_W);
                        if (schedule != null)
                        {
                            schedules.Add(schedule);
                        }
                    }
                }
            }
            return(schedules);
        }