Esempio n. 1
0
        /// <summary>
        ///     通过主站爬取错误期号列表中每一个期号
        ///     (百度乐彩)
        /// </summary>
        private void DoYesterdayFailedListByMainUrl()
        {
            if (!string.IsNullOrEmpty(Config.MainUrl) && FailedQiHaoList.Count > 0)
            {
                var OpenList = GetOpenListFromMainUrl();
                if (OpenList.Count == 0)
                {
                    return;                      //无抓取数据
                }
                OpenCode8DTModel matchItem = null;
                var SuccessList            = new List <string>();
                foreach (var failedQiHao in FailedQiHaoList)
                {
                    matchItem = OpenList.Where(R => R.Term.ToString() == failedQiHao).FirstOrDefault();
                    if (matchItem != null && OptimizeMainModel(ref matchItem) &&
                        services.AddDTOpen8Code(currentLottery, matchItem))
                    {
                        //Do Success Log
                        log.Info(GetType(), CommonHelper.GetJobMainLogInfo(Config, failedQiHao));
                        if (matchItem.Term > LatestItem.Term)
                        {
                            LatestItem = matchItem;
                        }
                        isGetData = true;
                        SuccessList.Add(failedQiHao);
                    }
                }

                foreach (var successQiHao in SuccessList)
                {
                    FailedQiHaoList.Remove(successQiHao);
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        ///     作业执行入口
        /// </summary>
        /// <param name="context">作业执行上下文</param>
        public void Execute(IJobExecutionContext context)
        {
            Config = CommonHelper.GetConfigFromDataMap(context.JobDetail.JobDataMap);

            //预设节假日不开奖
            if (Config.SkipDate.Contains(CommonHelper.SCCSysDateTime.ToString("yyyyMMdd")))
            {
                return;
            }
            LatestItem = context.JobDetail.JobDataMap["LatestItem"] as OpenCode8DTModel;
            try
            {
                //服务启动时配置初始数据
                if (LatestItem == null)
                {
                    LatestItem = services.GetOpenCode8DTLastItem(currentLottery);
                    if (LatestItem == null)
                    {
                        LatestItem = new OpenCode8DTModel
                        {
                            Term     = CommonHelper.GenerateQiHaoYYYYQQQ(0),
                            OpenTime = new DateTime(CommonHelper.SCCSysDateTime.Year, 1, 1)
                        }
                    }
                    ;
                }

                //程序时间第二天,程序根据配置检查是否昨天有开奖
                isGetData = false;
                if (CommonHelper.CheckDTIsNeedGetData(Config)) //
                {
                    DoMainUrl();
                    DoBackUrl();
                }

                if (!LatestItem.Term.ToString().StartsWith(CommonHelper.SCCSysDateTime.ToString("yy")))
                {
                    LatestItem = new OpenCode8DTModel
                    {
                        Term     = CommonHelper.GenerateQiHaoYYYYQQQ(0),
                        OpenTime = new DateTime(CommonHelper.SCCSysDateTime.Year, 1, 1)
                    }
                }
                ;

                //当今日开奖并且当前时间是晚上8点过后开始抓取
                if (CommonHelper.CheckTodayIsOpenDay(Config) && CommonHelper.SCCSysDateTime.Hour > 12)
                {
                    DoMainUrl();
                    DoBackUrl();
                }
            }
            catch (Exception ex)
            {
                log.Error(GetType(), string.Format("【{0}】抓取时发生错误,错误信息【{1}】", Config.Area + currentLottery, ex.Message));
            }

            //保存最新期号
            context.JobDetail.JobDataMap["LatestItem"] = LatestItem;
        }
Esempio n. 3
0
        private void DoMainUrl()
        {
            if (!string.IsNullOrEmpty(Config.MainUrl))
            {
                var openList = GetOpenListFromMainUrl(Config.MainUrl);
                if (openList.Count == 0)
                {
                    return;                      //无抓取数据
                }
                //抓取到的最新期数
                var newestQiHao = Convert.ToInt32(openList.First().Term.ToString());
                //数据库里面最新期数
                var startQiNum = Convert.ToInt32(LatestItem.Term.ToString());
                if (startQiNum > newestQiHao)
                {
                    return;                           //无最新数据
                }
                //处理最新开奖数据
                var getQiHao = string.Empty;
                OpenCode8DTModel matchItem = null;
                for (var i = startQiNum; i <= newestQiHao; i++)
                {
                    getQiHao  = i.ToString();
                    matchItem = openList.FirstOrDefault(r => r.Term.ToString() == getQiHao);

                    if (matchItem != null && services.AddDTOpen8Code(currentLottery, matchItem))
                    {
                        //Do Success Log
                        log.Info(GetType(), CommonHelper.GetJobMainLogInfo(Config, getQiHao));
                        LatestItem = matchItem;
                        isGetData  = true;
                    }
                }
            }
        }
Esempio n. 4
0
 private void DoBackUrl()
 {
     if (!string.IsNullOrEmpty(Config.BackUrl))
     {
         var OpenList = GetOpenListFromBackUrl();
         if (OpenList.Count == 0)
         {
             return;                      //无抓取数据
         }
         var newestQiHao = OpenList.Max(w => w.Term).ToString();
         var startQiNum  = Convert.ToInt32(LatestItem.Term.ToString().Substring(4)) + 1;
         var newestQiNum = Convert.ToInt32(newestQiHao.Substring(4));
         if (startQiNum > newestQiNum)
         {
             return;                           //无最新数据
         }
         //处理最新开奖数据
         var getQiHao = string.Empty;
         OpenCode8DTModel matchItem = null;
         for (var i = startQiNum; i <= newestQiNum; i++)
         {
             getQiHao  = i.ToString();
             matchItem = OpenList.Where(R => R.Term.ToString() == getQiHao).FirstOrDefault();
             if (matchItem != null && services.AddDTOpen8Code(currentLottery, matchItem))
             {
                 //Do Success Log
                 log.Info(GetType(), CommonHelper.GetJobBackLogInfo(Config, getQiHao));
                 LatestItem = matchItem;
                 isGetData  = true;
             }
         }
     }
 }
Esempio n. 5
0
        /// <summary>
        /// 完善备站数据详情
        /// </summary>
        /// <param name="model"></param>
        /// <param name="tr"></param>
        /// <returns></returns>
        private bool OptimizeBackModel(ref OpenCode8DTModel model, HtmlNode tr)
        {
            try
            {
                var entity = new KaijiangDetailsEntity();
                entity.KaiJiangItems = new List <Kaijiangitem>();
                var tds         = tr.ChildNodes.Where(w => w.Name == "td").ToList();
                var xiaoshoue   = tds[2].InnerText.Trim().Replace(",", "").Replace("元", "");
                var jiangchi    = "";
                var tedengjiang = new Kaijiangitem
                {
                    Name       = "特等奖",
                    Total      = tds[3].InnerText.Trim(),
                    TotalMoney = tds[4].InnerText
                };
                entity.KaiJiangItems.Add(tedengjiang);
                var yidengjiang = new Kaijiangitem
                {
                    Name       = "一等奖",
                    Total      = tds[5].InnerText.Trim(),
                    TotalMoney = tds[6].InnerText
                };
                entity.KaiJiangItems.Add(yidengjiang);
                var erdengjiang = new Kaijiangitem
                {
                    Name       = "二等奖",
                    Total      = tds[7].InnerText.Trim(),
                    TotalMoney = tds[8].InnerText
                };
                entity.KaiJiangItems.Add(erdengjiang);
                entity.Gdje = jiangchi;
                entity.Trje = xiaoshoue;
                model.Spare = entity.TryToJson();
            }
            catch (Exception ex)
            {
                log.Error(typeof(JSTC7WSJob),
                          string.Format("【{0}】通过主站点优化开奖详情时发生错误,错误信息【{1}】", Config.Area + currentLottery, ex.Message));
            }

            return(false);
        }
Esempio n. 6
0
        /// <summary>
        ///     通过备用地址抓取错误期号列表中每一个期号
        ///     (新疆体彩网)
        /// </summary>
        private void DoYesterdayFailedListByBackUrl()
        {
            if (!string.IsNullOrEmpty(Config.BackUrl) && FailedQiHaoList.Count > 0)
            {
                var OpenList = GetOpenListFromBackUrl();
                if (OpenList.Count == 0)
                {
                    return;                      //无抓取数据
                }
                OpenCode8DTModel matchItem = null;
                KeyValuePair <string, string> termItem;
                var SuccessList = new List <string>();
                foreach (var failedQiHao in FailedQiHaoList)
                {
                    termItem = OpenList.Where(R => R.Key == failedQiHao).FirstOrDefault();
                    if (string.IsNullOrWhiteSpace(termItem.Key))
                    {
                        continue;
                    }
                    matchItem = GetOpenModelFromBackUrl(termItem);
                    if (matchItem != null && services.AddDTOpen8Code(currentLottery, matchItem))
                    {
                        //Do Success Log
                        log.Info(GetType(), CommonHelper.GetJobBackLogInfo(Config, failedQiHao));
                        if (matchItem.Term > LatestItem.Term)
                        {
                            LatestItem = matchItem;
                        }
                        SuccessList.Add(failedQiHao);
                        isGetData = true;
                    }
                }

                foreach (var successQiHao in SuccessList)
                {
                    FailedQiHaoList.Remove(successQiHao);
                }
            }
        }
Esempio n. 7
0
 /// <summary>
 ///     通过备用站点抓取开奖数据
 ///     (新疆体彩网)
 ///     仅仅抓取首页上的最新5条数据
 /// </summary>
 private void DoTodayJobByBackUrl()
 {
     if (!string.IsNullOrEmpty(Config.BackUrl))
     {
         var OpenList = GetOpenListFromBackUrl();
         if (OpenList.Count == 0)
         {
             return;                      //无抓取数据
         }
         var newestQiHao = OpenList.First().Key;
         var startQiNum  = Convert.ToInt32(LatestItem.Term.ToString().Substring(4)) + 1;
         var newestQiNum = Convert.ToInt32(newestQiHao.Substring(4));
         if (startQiNum > newestQiNum)
         {
             return;                           //无最新数据
         }
         //处理最新开奖数据
         var getQiHao = string.Empty;
         OpenCode8DTModel matchItem = null;
         KeyValuePair <string, string> termItem;
         for (var i = startQiNum; i <= newestQiNum; i++)
         {
             getQiHao = LatestItem.Term.ToString().Substring(0, 4) + i.ToString().PadLeft(3, '0');
             termItem = OpenList.Where(R => R.Key == getQiHao).FirstOrDefault();
             if (string.IsNullOrWhiteSpace(termItem.Key))
             {
                 continue;
             }
             matchItem = GetOpenModelFromBackUrl(termItem);
             if (matchItem != null && services.AddDTOpen8Code(currentLottery, matchItem))
             {
                 //Do Success Log
                 log.Info(GetType(), CommonHelper.GetJobBackLogInfo(Config, getQiHao));
                 LatestItem = matchItem;
                 isGetData  = true;
             }
         }
     }
 }
Esempio n. 8
0
        private List <OpenCode8DTModel> GetOpenListFromMainUrl(string mainUrl)
        {
            var result = new List <OpenCode8DTModel>();

            try
            {
                var url          = new Uri(mainUrl);
                var htmlResource = NetHelper.GetUrlResponse(mainUrl, Encoding.GetEncoding("gb2312"));
                if (htmlResource == null)
                {
                    return(result);
                }

                var doc = new HtmlDocument();
                doc.LoadHtml(htmlResource);
                var table = doc.DocumentNode.SelectSingleNode("//table");
                if (table == null)
                {
                    return(result);
                }
                var trs = table.ChildNodes.Where(node => node.Name == "tr").ToList();
                OpenCode8DTModel model = null;
                HtmlNode         nodeA = null;
                var optimizeUrl        = string.Empty;
                for (var i = 2; i < trs.Count; i++) //第一二行为表头
                {
                    var trstyle = trs[i].Attributes["style"];
                    if (trstyle != null && trstyle.Value == "display:none")
                    {
                        continue;
                    }
                    var tds = trs[i].ChildNodes.Where(node => node.Name == "td").ToList();
                    if (tds.Count < 8)
                    {
                        continue;
                    }
                    model = new OpenCode8DTModel();
                    nodeA = tds[0].ChildNodes.Where(n => n.Name == "a").FirstOrDefault();
                    if (nodeA == null)
                    {
                        continue;
                    }
                    model.Term      = Convert.ToInt64(nodeA.InnerText.Trim());
                    optimizeUrl     = nodeA.Attributes["href"].Value;
                    model.DetailUrl = new Uri(url, optimizeUrl).AbsoluteUri;
                    model.OpenTime  = Convert.ToDateTime(tds[9].InnerText);
                    if (tds[1].ChildNodes.Count == 0)
                    {
                        continue;
                    }
                    var opencodeNode = tds[1].ChildNodes.Where(n => n.Name.ToLower() == "i").ToList();
                    if (opencodeNode.Count < 5)
                    {
                        continue;
                    }
                    model.OpenCode1 = Convert.ToInt32(opencodeNode[0].InnerText.Trim());
                    model.OpenCode2 = Convert.ToInt32(opencodeNode[1].InnerText.Trim());
                    model.OpenCode3 = Convert.ToInt32(opencodeNode[2].InnerText.Trim());
                    model.OpenCode4 = Convert.ToInt32(opencodeNode[3].InnerText.Trim());
                    model.OpenCode5 = Convert.ToInt32(opencodeNode[4].InnerText.Trim());
                    model.OpenCode6 = Convert.ToInt32(opencodeNode[5].InnerText.Trim());
                    model.OpenCode7 = Convert.ToInt32(opencodeNode[6].InnerText.Trim());
                    model.OpenCode8 = Convert.ToInt32(opencodeNode[7].InnerText.Trim());
                    var details = GetKaijiangDetails(tds);
                    model.Spare = details;
                    result.Add(model);
                }

                var checkDataHelper = new CheckDataHelper();
                var dbdata          = services.GetListS <OpenCode8DTModel>(currentLottery)
                                      .ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr());
                checkDataHelper.CheckData(dbdata, result.ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr()),
                                          Config.Area, currentLottery);
                result = result.OrderByDescending(S => S.Term).ToList();
            }
            catch (Exception ex)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过主站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ex.Message));
            }

            return(result);
        }
Esempio n. 9
0
        /// <summary>
        ///     完善备用站点福建31选7开奖实体信息
        /// </summary>
        /// <param name="model"></param>
        private bool OptimizeBackModel(ref OpenCode8DTModel model)
        {
            try
            {
                var htmlResource = NetHelper.GetUrlResponse(model.DetailUrl, Encoding.GetEncoding("gb2312"));
                if (string.IsNullOrWhiteSpace(htmlResource))
                {
                    return(false);
                }
                var doc = new HtmlDocument();
                doc.LoadHtml(htmlResource);
                var table = doc.DocumentNode.SelectSingleNode("//table");
                if (table == null)
                {
                    return(false);
                }
                var             trs    = table.ChildNodes.Where(N => N.Name.ToLower() == "tr").ToList();
                List <HtmlNode> tds    = null;
                var             entity = new KaijiangDetailsEntity();
                entity.KaiJiangItems = new List <Kaijiangitem>();
                for (var i = 1; i < trs.Count; i++) //第一行为表头
                {
                    tds = trs[i].ChildNodes.Where(N => N.Name.ToLower() == "td").ToList();
                    if (tds.Count < 5)
                    {
                        continue;
                    }
                    if (tds[1].InnerText == "一等奖")
                    {
                        var tmp = new Kaijiangitem
                        {
                            Name       = "一等奖",
                            Total      = tds[2].InnerText.Replace("注", string.Empty),
                            TotalMoney = tds[3].InnerText
                        };
                        entity.KaiJiangItems.Add(tmp);
                        // Level1Num = Convert.ToInt32(tds[2].InnerText.Replace("注", string.Empty));
                        // Level1Money = Convert.ToDecimal(tds[3].InnerText);
                    }

                    if (tds[1].InnerText == "二等奖")
                    {
                        var tmp = new Kaijiangitem
                        {
                            Name       = "二等奖",
                            Total      = tds[2].InnerText.Replace("注", string.Empty),
                            TotalMoney = tds[3].InnerText
                        };
                        entity.KaiJiangItems.Add(tmp);
                    }

                    if (tds[1].InnerText == "三等奖")
                    {
                        var tmp = new Kaijiangitem
                        {
                            Name       = "三等奖",
                            Total      = tds[2].InnerText.Replace("注", string.Empty),
                            TotalMoney = tds[3].InnerText
                        };
                        entity.KaiJiangItems.Add(tmp);
                    }

                    if (tds[1].InnerText == "四等奖")
                    {
                        var tmp = new Kaijiangitem
                        {
                            Name       = "四等奖",
                            Total      = tds[2].InnerText.Replace("注", string.Empty),
                            TotalMoney = tds[3].InnerText
                        };
                        entity.KaiJiangItems.Add(tmp);
                    }

                    if (tds[1].InnerText == "五等奖")
                    {
                        var tmp = new Kaijiangitem
                        {
                            Name       = "五等奖",
                            Total      = tds[2].InnerText.Replace("注", string.Empty),
                            TotalMoney = tds[3].InnerText
                        };
                        entity.KaiJiangItems.Add(tmp);
                    }

                    if (tds[1].InnerText == "六等奖")
                    {
                        var tmp = new Kaijiangitem
                        {
                            Name       = "六等奖",
                            Total      = tds[2].InnerText.Replace("注", string.Empty),
                            TotalMoney = tds[3].InnerText
                        };
                        entity.KaiJiangItems.Add(tmp);
                    }
                }

                var reg   = new Regex(@"本期投注总额:([\d.,]*?)元");
                var match = reg.Match(htmlResource);
                if (match.Success)
                {
                    entity.Trje = match.Result("$1").Replace(",", string.Empty);
                }
                reg   = new Regex(@"奖池资金累计金额:([\d.,]*?)元");
                match = reg.Match(htmlResource);
                if (match.Success)
                {
                    entity.Gdje = match.Result("$1").Replace(",", string.Empty);
                }
                model.Spare = model.TryToJson();
                //model.Spare = string.Format("{0},{1}^一等奖|{2}|{3},二等奖|{4}|{5},三等奖|{6}|{7},四等奖|{8}|{9},五等奖|{10}|{11},六等奖|{12}|{13}",
                //    Sales, Jackpot, Level1Num, Level1Money, Level2Num, Level2Money, Level3Num, Level3Money, Level4Num,
                //    Level4Money, Level5Num, Level5Money, Level6Num, Level6Money);
                return(true);
            }
            catch (Exception ex)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过备用站点优化开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ex.Message));
            }

            return(false);
        }
Esempio n. 10
0
        /// <summary>
        ///     获取主站开奖列表数据
        /// </summary>
        /// <returns></returns>
        private List <OpenCode8DTModel> GetOpenListFromMainUrl()
        {
            var result = new List <OpenCode8DTModel>();

            try
            {
                var htmlResource =
                    NetHelper.GetUrlResponse(Config.MainUrl +
                                             string.Format("&r={0}", new Random().Next(1000, 9999))); //只取第一页数据,最新5条记录
                if (htmlResource == null)
                {
                    return(result);
                }

                var doc = new HtmlDocument();
                doc.LoadHtml(htmlResource);
                var divSections = doc.DocumentNode.SelectNodes("//div[@class='artCon KJDetail']").ToList();
                if (divSections == null)
                {
                    return(result);
                }

                OpenCode8DTModel model = null;
                var             lastYear = (CommonHelper.SCCSysDateTime.Year - 1).ToString().Substring(2);
                HtmlNode        divSummary, divDetail, table, tbody;
                List <HtmlNode> divContent, divInfos, spans, trs, tds, divDetails, divTexts;
                string          term        = string.Empty,
                                detailName  = string.Empty,
                                detailNum   = string.Empty,
                                detailMoney = string.Empty;
                string[] openCode           = null;
                Regex    reg                = null;
                Match    m = null;
                foreach (var divSection in divSections)
                {
                    var entity = new KaijiangDetailsEntity();
                    entity.KaiJiangItems = new List <Kaijiangitem>();
                    model    = new OpenCode8DTModel();
                    divInfos = divSection.ChildNodes.Where(N => N.Name.ToLower() == "div").ToList();
                    if (divInfos.Count < 2)
                    {
                        continue;
                    }
                    divContent = divInfos[1].ChildNodes.Where(N => N.Name.ToLower() == "div").ToList();
                    if (divContent.Count < 2)
                    {
                        continue;
                    }
                    divSummary = divContent[0]; //概述
                    divDetail  = divContent[1]; //详情
                    spans      = divSummary.ChildNodes.First(N => N.Name.ToLower() == "strong").ChildNodes
                                 .Where(N => N.Name.ToLower() == "span").ToList();
                    term = spans[0].InnerText;
                    if (term.StartsWith(lastYear))
                    {
                        break;
                    }
                    model.Term     = Convert.ToInt32(term);
                    model.OpenTime = Convert.ToDateTime(spans[2].InnerText.Replace("年", "-").Replace("月", "-")
                                                        .Replace("日", string.Empty));
                    openCode        = (spans[3].InnerText + " " + spans[4].InnerText).Trim().Split(' ');
                    model.OpenCode1 = Convert.ToInt32(openCode[0]);
                    model.OpenCode2 = Convert.ToInt32(openCode[1]);
                    model.OpenCode3 = Convert.ToInt32(openCode[2]);
                    model.OpenCode4 = Convert.ToInt32(openCode[3]);
                    model.OpenCode5 = Convert.ToInt32(openCode[4]);
                    model.OpenCode6 = Convert.ToInt32(openCode[5]);
                    model.OpenCode7 = Convert.ToInt32(openCode[6]);
                    model.OpenCode8 = Convert.ToInt32(openCode[7]);

                    table = divDetail.ChildNodes.FirstOrDefault(N => N.Name.ToLower() == "table");
                    if (table == null)
                    {
                        divDetails = divDetail.ChildNodes.Where(N => N.Name.ToLower() == "div").ToList();
                        if (divDetails.Count < 14)
                        {
                            continue;
                        }
                        for (var i = 4; i < 12; i++)
                        {
                            divTexts = divDetails[i].ChildNodes.Where(N => N.Name.ToLower() == "#text").ToList();
                            if (divTexts.Count < 4)
                            {
                                continue;
                            }
                            detailName = divTexts[0].InnerText.Replace("&nbsp;", string.Empty).Trim();
                            detailNum  = divTexts[1].InnerText.Replace("&nbsp;", string.Empty).Replace("注", string.Empty)
                                         .Trim();
                            detailMoney = divTexts[2].InnerText.Replace("&nbsp;", string.Empty)
                                          .Replace(",", string.Empty).Replace("元", string.Empty).Trim();
                            if (detailName == "一等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name       = "一等奖",
                                    Total      = detailNum,
                                    TotalMoney = detailMoney
                                };
                                entity.KaiJiangItems.Add(tmp);
                            }
                            else if (detailName == "二等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name       = "二等奖",
                                    Total      = detailNum,
                                    TotalMoney = detailMoney
                                };
                                entity.KaiJiangItems.Add(tmp);
                                // Level2Num = Convert.ToInt32(detailNum);
                                // Level2Money = Convert.ToDecimal(detailMoney);
                            }
                            else if (detailName == "三等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name       = "三等奖",
                                    Total      = detailNum,
                                    TotalMoney = detailMoney
                                };
                                entity.KaiJiangItems.Add(tmp);
                            }
                            else if (detailName == "四等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name       = "四等奖",
                                    Total      = detailNum,
                                    TotalMoney = detailMoney
                                };
                                entity.KaiJiangItems.Add(tmp);
                            }
                            else if (detailName == "五等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name       = "五等奖",
                                    Total      = detailNum,
                                    TotalMoney = detailMoney
                                };
                                entity.KaiJiangItems.Add(tmp);
                            }
                            else if (detailName == "六等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name       = "六等奖",
                                    Total      = detailNum,
                                    TotalMoney = detailMoney
                                };
                                entity.KaiJiangItems.Add(tmp);
                            }
                        }
                    }
                    else
                    {
                        tbody = table.ChildNodes.FirstOrDefault(N => N.Name.ToLower() == "tbody");
                        if (tbody == null)
                        {
                            continue;
                        }
                        trs = tbody.ChildNodes.Where(N => N.Name.ToLower() == "tr").ToList();
                        for (var i = 4; i < trs.Count; i++) //第一二三四行是表头
                        {
                            tds = trs[i].ChildNodes.Where(N => N.Name.ToLower() == "td").ToList();
                            if (tds.Count < 3)
                            {
                                continue;
                            }
                            if (tds[0].InnerText.Trim() == "一等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name  = "一等奖",
                                    Total = tds[1].InnerText.Replace("注", string.Empty).Replace("&nbsp;", string.Empty)
                                            .Replace(",", string.Empty).Trim(),
                                    TotalMoney =
                                        tds[2].InnerText.Replace("元", string.Empty).Replace("&nbsp;", string.Empty)
                                        .Trim()
                                };
                                entity.KaiJiangItems.Add(tmp);
                                //Level1Num = Convert.ToInt32(tds[1].InnerText.Replace("注", string.Empty).Replace("&nbsp;", string.Empty).Replace(",", string.Empty).Trim());
                                //Level1Money = Convert.ToDecimal(tds[2].InnerText.Replace("元", string.Empty).Replace("&nbsp;", string.Empty).Trim());
                            }
                            else if (tds[0].InnerText.Trim() == "二等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name  = "二等奖",
                                    Total = tds[1].InnerText.Replace("注", string.Empty).Replace("&nbsp;", string.Empty)
                                            .Replace(",", string.Empty).Trim(),
                                    TotalMoney =
                                        tds[2].InnerText.Replace("元", string.Empty).Replace("&nbsp;", string.Empty)
                                        .Trim()
                                };
                                entity.KaiJiangItems.Add(tmp);
                                // Level2Num = Convert.ToInt32(tds[1].InnerText.Replace("注", string.Empty).Replace("&nbsp;", string.Empty).Replace(",", string.Empty).Trim());
                                //Level2Money = Convert.ToDecimal(tds[2].InnerText.Replace("元", string.Empty).Replace("&nbsp;", string.Empty).Trim());
                            }
                            else if (tds[0].InnerText.Trim() == "三等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name  = "三等奖",
                                    Total = tds[1].InnerText.Replace("注", string.Empty).Replace("&nbsp;", string.Empty)
                                            .Replace(",", string.Empty).Trim(),
                                    TotalMoney =
                                        tds[2].InnerText.Replace("元", string.Empty).Replace("&nbsp;", string.Empty)
                                        .Trim()
                                };
                                entity.KaiJiangItems.Add(tmp);
                                // Level3Num = Convert.ToInt32(tds[1].InnerText.Replace("注", string.Empty).Replace("&nbsp;", string.Empty).Replace(",", string.Empty).Trim());
                                // Level3Money = Convert.ToDecimal(tds[2].InnerText.Replace("元", string.Empty).Replace("&nbsp;", string.Empty).Trim());
                            }
                            else if (tds[0].InnerText.Trim() == "四等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name  = "四等奖",
                                    Total = tds[1].InnerText.Replace("注", string.Empty).Replace("&nbsp;", string.Empty)
                                            .Replace(",", string.Empty).Trim(),
                                    TotalMoney =
                                        tds[2].InnerText.Replace("元", string.Empty).Replace("&nbsp;", string.Empty)
                                        .Trim()
                                };
                                entity.KaiJiangItems.Add(tmp);
                            }
                            else if (tds[0].InnerText.Trim() == "五等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name  = "五等奖",
                                    Total = tds[1].InnerText.Replace("注", string.Empty).Replace("&nbsp;", string.Empty)
                                            .Replace(",", string.Empty).Trim(),
                                    TotalMoney =
                                        tds[2].InnerText.Replace("元", string.Empty).Replace("&nbsp;", string.Empty)
                                        .Trim()
                                };
                                entity.KaiJiangItems.Add(tmp);
                            }
                            else if (tds[0].InnerText.Trim() == "六等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name  = "六等奖",
                                    Total = tds[1].InnerText.Replace("注", string.Empty).Replace("&nbsp;", string.Empty)
                                            .Replace(",", string.Empty).Trim(),
                                    TotalMoney =
                                        tds[2].InnerText.Replace("元", string.Empty).Replace("&nbsp;", string.Empty)
                                        .Trim()
                                };
                                entity.KaiJiangItems.Add(tmp);
                            }
                        }
                    }

                    //抓取奖池累计数据
                    reg = new Regex(@"([\d,.]*?)元奖金滚入下期奖池");
                    // Sales = Convert.ToDecimal(spans[1].InnerText);
                    entity.Trje = spans[1].InnerText;
                    m           = reg.Match(divSection.InnerHtml);
                    if (m.Success)
                    {
                        // Jackpot = Convert.ToDecimal(m.Result("$1"));
                        entity.Gdje = m.Result("$1");
                    }
                    model.Spare = entity.TryToJson();
                    //model.Spare = string.Format("{0},{1}^一等奖|{2}|{3},二等奖|{4}|{5},三等奖|{6}|{7},四等奖|{8}|{9},五等奖|{10}|{11},六等奖|{12}|{13}",
                    //    Sales, Jackpot, Level1Num, Level1Money, Level2Num, Level2Money, Level3Num, Level3Money, Level4Num,
                    //    Level4Money, Level5Num, Level5Money, Level6Num, Level6Money);
                    result.Add(model);
                }

                var checkDataHelper = new CheckDataHelper();
                var dbdata          = services.GetListS <OpenCode8DTModel>(currentLottery)
                                      .ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr());
                checkDataHelper.CheckData(dbdata, result.ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr()),
                                          Config.Area, currentLottery);
                result = result.OrderByDescending(S => S.Term).ToList();
            }
            catch (Exception ex)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过主站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ex.Message));
            }

            return(result);
        }
Esempio n. 11
0
        /// <summary>
        ///     通过期号编号从备用站点爬取开奖信息
        /// </summary>
        /// <param name="termItem">备用站点的期号信息</param>
        /// <returns></returns>
        private OpenCode8DTModel GetOpenModelFromBackUrl(KeyValuePair <string, string> termItem)
        {
            var result = new OpenCode8DTModel();

            try
            {
                if (string.IsNullOrWhiteSpace(termItem.Key) || string.IsNullOrWhiteSpace(termItem.Value))
                {
                    return(result);
                }
                result.Term = Convert.ToInt64(termItem.Key);
                var lotteryNumberUrl = "http://www.xjflcp.com/getLotteryNumber";
                var numberJson       = NetHelper.GetUrlResponse(lotteryNumberUrl, "POST",
                                                                string.Format("lotteryId={0}", termItem.Value));
                if (numberJson == null)
                {
                    return(result);
                }

                int Level1Num       = 0,
                    Level2Num       = 0,
                    Level3Num       = 0,
                    Level4Num       = 0,
                    Level5Num       = 0,
                    Level6Num       = 0,
                    Level7Num       = 0;
                decimal Level1Money = 0,
                        Level2Money = 0,
                        Level3Money = 0,
                        Level4Money = 0,
                        Level5Money = 0,
                        Level6Money = 0,
                        Level7Money = 0,
                        Sales       = 0,
                        Jackpot     = 0;
                var numberObj       = numberJson.JsonToEntity <dynamic>();
                for (var i = 0; i < numberObj.Count; i++)
                {
                    if (numberObj[i].key == "announceTime")
                    {
                        result.OpenTime = Convert.ToDateTime(numberObj[i].value);
                    }
                    else if (numberObj[i].key == "totalSale")
                    {
                        Sales = Convert.ToDecimal(numberObj[i].value);
                    }
                    else if (numberObj[i].key == "totalProgressive")
                    {
                        Jackpot = Convert.ToDecimal(numberObj[i].value);
                    }
                    else if (numberObj[i].key == "0")
                    {
                        result.OpenCode1 = Convert.ToInt32(numberObj[i].value);
                    }
                    else if (numberObj[i].key == "1")
                    {
                        result.OpenCode2 = Convert.ToInt32(numberObj[i].value);
                    }
                    else if (numberObj[i].key == "2")
                    {
                        result.OpenCode3 = Convert.ToInt32(numberObj[i].value);
                    }
                    else if (numberObj[i].key == "3")
                    {
                        result.OpenCode4 = Convert.ToInt32(numberObj[i].value);
                    }
                    else if (numberObj[i].key == "4")
                    {
                        result.OpenCode5 = Convert.ToInt32(numberObj[i].value);
                    }
                    else if (numberObj[i].key == "5")
                    {
                        result.OpenCode6 = Convert.ToInt32(numberObj[i].value);
                    }
                    else if (numberObj[i].key == "6")
                    {
                        result.OpenCode7 = Convert.ToInt32(numberObj[i].value);
                    }
                    else if (numberObj[i].key == "7")
                    {
                        result.OpenCode8 = Convert.ToInt32(numberObj[i].value);
                    }
                }
                var lotteryDetailUrl = "http://www.xjflcp.com/getLotteryDetailInfo";
                var detailJson       = NetHelper.GetUrlResponse(lotteryDetailUrl, "POST",
                                                                string.Format("lotteryId={0}&gameId=4", termItem.Value));
                if (!string.IsNullOrEmpty(numberJson))
                {
                    var detailObj = detailJson.JsonToEntity <dynamic>();
                    for (var i = 0; i < detailObj.Count; i++)
                    {
                        if (detailObj[i].prizeName == "一等奖")
                        {
                            Level1Num   = Convert.ToInt32(detailObj[i].number.ToString().Replace(",", ""));
                            Level1Money = Convert.ToDecimal(detailObj[i].prize);
                        }
                        else if (detailObj[i].prizeName == "二等奖")
                        {
                            Level2Num   = Convert.ToInt32(detailObj[i].number.ToString().Replace(",", ""));
                            Level2Money = Convert.ToDecimal(detailObj[i].prize);
                        }
                        else if (detailObj[i].prizeName == "三等奖")
                        {
                            Level3Num   = Convert.ToInt32(detailObj[i].number.ToString().Replace(",", ""));
                            Level3Money = Convert.ToDecimal(detailObj[i].prize);
                        }
                        else if (detailObj[i].prizeName == "四等奖")
                        {
                            Level4Num   = Convert.ToInt32(detailObj[i].number.ToString().Replace(",", ""));
                            Level4Money = Convert.ToDecimal(detailObj[i].prize);
                        }
                        else if (detailObj[i].prizeName == "五等奖")
                        {
                            Level5Num   = Convert.ToInt32(detailObj[i].number.ToString().Replace(",", ""));
                            Level5Money = Convert.ToDecimal(detailObj[i].prize);
                        }
                        else if (detailObj[i].prizeName == "六等奖")
                        {
                            Level6Num   = Convert.ToInt32(detailObj[i].number.ToString().Replace(",", ""));
                            Level6Money = Convert.ToDecimal(detailObj[i].prize);
                        }
                        else if (detailObj[i].prizeName == "七等奖")
                        {
                            Level7Num   = Convert.ToInt32(detailObj[i].number.ToString().Replace(",", ""));
                            Level7Money = Convert.ToDecimal(detailObj[i].prize);
                        }
                    }
                }

                result.Spare = string.Format(
                    "{0},{1}^一等奖|{2}|{3},二等奖|{4}|{5},三等奖|{6}|{7},四等奖|{8}|{9},五等奖|{10}|{11},六等奖|{12}|{13},七等奖|{14}|{15}",
                    Sales, Jackpot, Level1Num, Level1Money, Level2Num, Level2Money, Level3Num, Level3Money,
                    Level4Num, Level4Money, Level5Num, Level5Money, Level6Num, Level6Money, Level7Num, Level7Money);
            }

            catch (Exception ex)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过备用站点抓取开奖详情数据时发生错误,错误信息【{1}】", Config.Area + Config.LotteryName, ex.Message));
            }

            return(result);
        }
Esempio n. 12
0
        /// <summary>
        ///     通过主站点爬取开奖列表数据
        /// </summary>
        /// <returns></returns>
        private List <OpenCode8DTModel> GetOpenListFromMainUrl()
        {
            var result = new List <OpenCode8DTModel>();

            try
            {
                var requestUrl   = string.Format("{0}?r={1}", Config.MainUrl, new Random().Next(1000, 9999));
                var htmlResource = NetHelper.GetBaiDuLeCaiResponse(requestUrl);
                if (htmlResource == null)
                {
                    return(result);
                }

                var doc = new HtmlDocument();
                doc.LoadHtml(htmlResource);
                var table = doc.DocumentNode.SelectSingleNode("//tbody");
                if (table == null)
                {
                    return(result);
                }
                var trs = table.ChildNodes.Where(node => node.Name == "tr").ToList();
                OpenCode8DTModel model = null;
                List <HtmlNode>  tds, alist = null;
                for (var i = 0; i < trs.Count; i++) //第一行
                {
                    var trstyle = trs[i].Attributes["style"];
                    if (trstyle != null && trstyle.Value == "display:none")
                    {
                        continue;
                    }
                    tds = trs[i].ChildNodes.Where(node => node.Name == "td").ToList();
                    if (tds.Count < 4)
                    {
                        continue;
                    }
                    model          = new OpenCode8DTModel();
                    model.OpenTime = Convert.ToDateTime(tds[0].InnerText);
                    alist          = tds[1].ChildNodes.Where(n => n.Name == "a").ToList();
                    if (alist.Count < 0)
                    {
                        continue;
                    }
                    model.Term = Convert.ToInt64(alist[0].InnerText.Trim());
                    if (tds[2].ChildNodes.Count == 0)
                    {
                        continue;
                    }
                    var opencodeNode = tds[2].ChildNodes[0].ChildNodes.Where(n => n.Name == "span").ToList();
                    if (opencodeNode.Count < 8)
                    {
                        continue;
                    }
                    model.OpenCode1 = Convert.ToInt32(opencodeNode[0].InnerText.Trim());
                    model.OpenCode2 = Convert.ToInt32(opencodeNode[1].InnerText.Trim());
                    model.OpenCode3 = Convert.ToInt32(opencodeNode[2].InnerText.Trim());
                    model.OpenCode4 = Convert.ToInt32(opencodeNode[3].InnerText.Trim());
                    model.OpenCode5 = Convert.ToInt32(opencodeNode[4].InnerText.Trim());
                    model.OpenCode6 = Convert.ToInt32(opencodeNode[5].InnerText.Trim());
                    model.OpenCode7 = Convert.ToInt32(opencodeNode[6].InnerText.Trim());
                    model.OpenCode8 = Convert.ToInt32(opencodeNode[7].InnerText.Trim());
                    result.Add(model);
                }

                result = result.OrderByDescending(S => S.Term).ToList();
            }
            catch (Exception ex)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过主站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + Config.LotteryName, ex.Message));
            }

            return(result);
        }
Esempio n. 13
0
        /// <summary>
        ///     副站数据爬取 地址:https://fx.cp2y.com/draw/history_10065_Y/
        /// </summary>
        /// <returns></returns>
        private List <OpenCode8DTModel> GetOpenListFromBackUrl()
        {
            var result = new List <OpenCode8DTModel>();

            try
            {
                var htmlResource = NetHelper.GetUrlResponse(Config.BackUrl, Encoding.Default);
                if (htmlResource == null)
                {
                    return(result);
                }

                var doc = new HtmlDocument();
                doc.LoadHtml(htmlResource);
                var table = doc.DocumentNode.SelectSingleNode("//table");
                if (table == null)
                {
                    return(result);
                }
                var              trs = table.ChildNodes.Where(node => node.Name == "tr").ToList();
                List <HtmlNode>  tds = null;
                string           term = string.Empty, openCodeString = string.Empty, optimizeUrl = string.Empty;
                OpenCode8DTModel model = null;
                for (var i = 0; i < trs.Count; i++)
                {
                    tds = trs[i].ChildNodes.Where(S => S.Name.ToLower() == "td").ToList();
                    if (tds.Count < 4)
                    {
                        continue;
                    }

                    model = new OpenCode8DTModel();
                    term  = tds[0].InnerText.Trim();
                    if (term.StartsWith((CommonHelper.SCCSysDateTime.Year - 1).ToString()))
                    {
                        break;
                    }

                    model.Term      = Convert.ToInt64(term);
                    openCodeString  = tds[1].InnerText.Replace("&nbsp;", "").Trim();
                    model.OpenCode1 = Convert.ToInt32(openCodeString.Substring(0, 2));
                    model.OpenCode2 = Convert.ToInt32(openCodeString.Substring(2, 2));
                    model.OpenCode3 = Convert.ToInt32(openCodeString.Substring(4, 2));
                    model.OpenCode4 = Convert.ToInt32(openCodeString.Substring(6, 2));
                    model.OpenCode5 = Convert.ToInt32(openCodeString.Substring(8, 2));
                    model.OpenCode6 = Convert.ToInt32(openCodeString.Substring(10, 2));
                    model.OpenCode7 = Convert.ToInt32(openCodeString.Substring(12, 2));
                    model.OpenCode8 = Convert.ToInt32(openCodeString.Substring(14, 2));
                    model.OpenTime  = Convert.ToDateTime(tds[9].InnerText.Trim());
                    //组装开奖详情

                    result.Add(model);
                }

                var checkDataHelper = new CheckDataHelper();
                var dbdata          = services.GetListS <OpenCode8DTModel>(currentLottery)
                                      .ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr());
                checkDataHelper.CheckData(dbdata, result.ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr()),
                                          Config.Area, currentLottery);
            }
            catch (Exception ex)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过备用站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ex.Message));
            }

            return(result);
        }
Esempio n. 14
0
        /// <summary>
        ///     获取备用站点开奖列表数据
        /// </summary>
        /// <returns></returns>
        private List <OpenCode8DTModel> GetOpenListFromMainUrl()
        {
            var result = new List <OpenCode8DTModel>();

            try
            {
                var htmlResource = NetHelper.GetUrlResponse(Config.MainUrl);
                if (htmlResource == null)
                {
                    return(result);
                }

                var doc = new HtmlDocument();
                doc.LoadHtml(htmlResource);
                var tables = doc.DocumentNode.SelectNodes("//table[@cellpadding]");
                if (tables == null)
                {
                    return(result);
                }

                var tbody = tables[0].ChildNodes.Where(w => w.Name == "tbody").ToList();
                var trs   = tbody[0].ChildNodes.Where(w => w.Name == "tr").ToList();
                foreach (var item in trs)
                {
                    var tds = item.ChildNodes.Select(w => w).ToList();
                    tds.RemoveAll(w => w.Name != "td");
                    var qihao         = tds[0].InnerText.Trim();
                    var kaijianghaoma = tds[1].InnerText.Trim().Split('+');
                    var opentime      = tds[12].InnerText.Trim();
                    var tmp           = new OpenCode8DTModel
                    {
                        Term     = long.Parse(qihao),
                        OpenTime = DateTime.Parse(opentime)
                    };
                    tmp.OpenCode1 = int.Parse(kaijianghaoma[0]);
                    tmp.OpenCode2 = int.Parse(kaijianghaoma[1]);
                    tmp.OpenCode3 = int.Parse(kaijianghaoma[2]);
                    tmp.OpenCode4 = int.Parse(kaijianghaoma[3]);
                    tmp.OpenCode5 = int.Parse(kaijianghaoma[4]);
                    tmp.OpenCode6 = int.Parse(kaijianghaoma[5]);
                    tmp.OpenCode7 = int.Parse(kaijianghaoma[6]);
                    tmp.OpenCode8 = int.Parse(kaijianghaoma[7]);

                    OptimizeMainModel(ref tmp, item);
                    result.Add(tmp);
                }


                var checkDataHelper = new CheckDataHelper();
                var dbdata          = services.GetListS <OpenCode8DTModel>(currentLottery)
                                      .ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr());
                checkDataHelper.CheckData(dbdata, result.ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr()),
                                          Config.Area, currentLottery);
                result = result.OrderByDescending(S => S.Term).ToList();
            }
            catch (Exception ex)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过主站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ex.Message));
            }

            return(result);
        }
Esempio n. 15
0
        /// <summary>
        ///     给开奖信息加上开奖详情
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private bool OptimizeMainModel(ref OpenCode8DTModel modelr, HtmlNode tr)
        {
            try
            {
                var entity = new KaijiangDetailsEntity();
                entity.KaiJiangItems = new List <Kaijiangitem>();
                var tds = tr.ChildNodes.Select(w => w).ToList();
                tds.RemoveAll(w => w.Name != "td");
                if (tds.Count != 13)
                {
                    return(false);
                }
                var tdjstr      = tds[2].InnerText.Trim().Split('注', '元');
                var tedengjiang = new Kaijiangitem
                {
                    Name       = "特等奖",
                    Total      = tdjstr[0].Replace(",", "").Trim(),
                    TotalMoney = tdjstr[1].Replace(",", "").Trim()
                };
                entity.KaiJiangItems.Add(tedengjiang);
                var ydjstr      = tds[3].InnerText.Trim().Split('注', '元');
                var yidengjiang = new Kaijiangitem
                {
                    Name       = "一等奖",
                    Total      = ydjstr[0].Replace(",", "").Trim(),
                    TotalMoney = ydjstr[1].Replace(",", "").Trim()
                };
                entity.KaiJiangItems.Add(yidengjiang);
                var edjstr      = tds[4].InnerText.Trim().Split('注', '元');
                var erdengjiang = new Kaijiangitem
                {
                    Name       = "二等奖",
                    Total      = edjstr[0].Replace(",", "").Trim(),
                    TotalMoney = edjstr[1].Replace(",", "").Trim()
                };
                entity.KaiJiangItems.Add(erdengjiang);
                var sdjstr       = tds[5].InnerText.Trim().Split('注', '元');
                var sandengjiang = new Kaijiangitem
                {
                    Name       = "三等奖",
                    Total      = sdjstr[0].Replace(",", "").Trim(),
                    TotalMoney = sdjstr[1].Replace(",", "").Trim()
                };
                entity.KaiJiangItems.Add(sandengjiang);
                var sidjstr     = tds[6].InnerText.Trim().Split('注', '元');
                var sidengjiang = new Kaijiangitem
                {
                    Name       = "四等奖",
                    Total      = sidjstr[0].Replace(",", "").Trim(),
                    TotalMoney = sidjstr[1].Replace(",", "").Trim()
                };
                entity.KaiJiangItems.Add(sidengjiang);

                var wdjstr      = tds[7].InnerText.Trim().Split('注', '元');
                var wudengjiang = new Kaijiangitem
                {
                    Name       = "五等奖",
                    Total      = wdjstr[0].Replace(",", "").Trim(),
                    TotalMoney = wdjstr[1].Replace(",", "").Trim()
                };
                entity.KaiJiangItems.Add(wudengjiang);

                var ldjstr       = tds[8].InnerText.Trim().Split('注', '元');
                var liudengjiang = new Kaijiangitem
                {
                    Name       = "六等奖",
                    Total      = ldjstr[0].Replace(",", "").Trim(),
                    TotalMoney = ldjstr[1].Replace(",", "").Trim()
                };
                entity.KaiJiangItems.Add(liudengjiang);

                var xyjstr       = tds[9].InnerText.Trim().Split('注', '元');
                var xingyunjiang = new Kaijiangitem
                {
                    Name       = "幸运奖",
                    Total      = xyjstr[0].Replace(",", "").Trim(),
                    TotalMoney = xyjstr[1].Replace(",", "").Trim()
                };
                entity.KaiJiangItems.Add(xingyunjiang);
                entity.Gdje  = tds[11].InnerText.Replace(",", "").Trim();
                entity.Trje  = tds[10].InnerText.Replace(",", "").Trim();
                modelr.Spare = entity.TryToJson();
                return(true);
            }
            catch (Exception ee)
            {
                return(false);
            }
        }
Esempio n. 16
0
        /// <summary>
        ///     副站数据爬取 地址:https://fx.cp2y.com/draw/history_10065_Y/
        /// </summary>
        /// <returns></returns>
        private List <OpenCode8DTModel> GetOpenListFromBackUrl()
        {
            var result = new List <OpenCode8DTModel>();

            try
            {
                var htmlResource = NetHelper.GetUrlResponse(Config.BackUrl, Encoding.GetEncoding("UTF-8"));
                if (htmlResource == null)
                {
                    return(result);
                }

                var doc = new HtmlDocument();
                doc.LoadHtml(htmlResource);
                var table = doc.DocumentNode.SelectSingleNode("//tbody");
                if (table == null)
                {
                    return(result);
                }
                var              trs = table.ChildNodes.Where(node => node.Name == "tr").ToList();
                List <HtmlNode>  tds = null;
                string           term = string.Empty, openCodeString = string.Empty, optimizeUrl = string.Empty;
                OpenCode8DTModel model = null;
                for (var i = 0; i < trs.Count; i++)
                {
                    tds = trs[i].ChildNodes.Where(S => S.Name.ToLower() == "td").ToList();
                    if (tds.Count < 3)
                    {
                        continue;
                    }

                    model      = new OpenCode8DTModel();
                    term       = tds[0].InnerText.Trim().Substring(0, 7);
                    model.Term = Convert.ToInt64(term);
                    var opencodeUl   = tds[1].ChildNodes.Where(n => n.Name.ToLower() == "ul").ToList();
                    var opencodeNode = opencodeUl[0].ChildNodes.Where(n => n.Name.ToLower() == "li").ToList();
                    if (opencodeNode.Count < 5)
                    {
                        continue;
                    }
                    model.OpenCode1 = Convert.ToInt32(opencodeNode[0].InnerText.Trim());
                    model.OpenCode2 = Convert.ToInt32(opencodeNode[1].InnerText.Trim());
                    model.OpenCode3 = Convert.ToInt32(opencodeNode[2].InnerText.Trim());
                    model.OpenCode4 = Convert.ToInt32(opencodeNode[3].InnerText.Trim());
                    model.OpenCode5 = Convert.ToInt32(opencodeNode[4].InnerText.Trim());
                    model.OpenCode6 = Convert.ToInt32(opencodeNode[5].InnerText.Trim());
                    model.OpenCode7 = Convert.ToInt32(opencodeNode[6].InnerText.Trim());
                    model.OpenCode8 = Convert.ToInt32(opencodeNode[7].InnerText.Trim());
                    //组装开奖详情
                    result.Add(model);
                }

                var checkDataHelper = new CheckDataHelper();
                var dbdata          = services.GetListS <OpenCode8DTModel>(currentLottery)
                                      .ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr());
                checkDataHelper.CheckData(dbdata, result.ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr()),
                                          Config.Area, currentLottery);
            }
            catch (Exception ex)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过备用站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ex.Message));
            }

            return(result);
        }
Esempio n. 17
0
        /// <summary>
        ///     完善主站点开奖实体信息
        /// </summary>
        /// <param name="model"></param>
        private bool OptimizeMainModel(ref OpenCode8DTModel model)
        {
            var url = string.Format("http://baidu.lecai.com/lottery/draw/view/520/{0}?r={1}", model.Term,
                                    new Random().Next(1000, 9999));

            try
            {
                var htmlResource = NetHelper.GetBaiDuLeCaiResponse(url);
                var reg          = new Regex(@"var phaseData = ([\s\S]*?);");
                var m            = reg.Match(htmlResource);
                if (m.Success)
                {
                    var dataJson = m.Result("$1");
                    var obj      = dataJson.JsonToEntity <dynamic>();
                    var data     = obj[model.Term.ToString()];
                    if (data != null)
                    {
                        int Level1Num       = 0,
                            Level2Num       = 0,
                            Level3Num       = 0,
                            Level4Num       = 0,
                            Level5Num       = 0,
                            Level6Num       = 0,
                            Level7Num       = 0;
                        decimal Level1Money = 0,
                                Level2Money = 0,
                                Level3Money = 0,
                                Level4Money = 0,
                                Level5Money = 0,
                                Level6Money = 0,
                                Level7Money = 0,
                                Sales       = 0,
                                Jackpot     = 0;
                        Jackpot   = Convert.ToDecimal(data["formatPoolAmount"]);
                        Sales     = Convert.ToDecimal(data["formatSaleAmount"]);
                        Level1Num = Convert.ToInt32(data["list"]["prize1"]["bet"].Value.Replace(",", string.Empty)
                                                    .Replace("注", string.Empty));
                        Level1Money = Convert.ToDecimal(data["list"]["prize1"]["prize"].Value.Replace(",", string.Empty)
                                                        .Replace("元", string.Empty));
                        Level2Num = Convert.ToInt32(data["list"]["prize2"]["bet"].Value.Replace(",", string.Empty)
                                                    .Replace("注", string.Empty));
                        Level2Money = Convert.ToDecimal(data["list"]["prize2"]["prize"].Value.Replace(",", string.Empty)
                                                        .Replace("元", string.Empty));
                        Level3Num = Convert.ToInt32(data["list"]["prize3"]["bet"].Value.Replace(",", string.Empty)
                                                    .Replace("注", string.Empty));
                        Level3Money = Convert.ToDecimal(data["list"]["prize3"]["prize"].Value.Replace(",", string.Empty)
                                                        .Replace("元", string.Empty));
                        Level4Num = Convert.ToInt32(data["list"]["prize4"]["bet"].Value.Replace(",", string.Empty)
                                                    .Replace("注", string.Empty));
                        Level4Money = Convert.ToDecimal(data["list"]["prize4"]["prize"].Value.Replace(",", string.Empty)
                                                        .Replace("元", string.Empty));
                        Level5Num = Convert.ToInt32(data["list"]["prize5"]["bet"].Value.Replace(",", string.Empty)
                                                    .Replace("注", string.Empty));
                        Level5Money = Convert.ToDecimal(data["list"]["prize5"]["prize"].Value.Replace(",", string.Empty)
                                                        .Replace("元", string.Empty));
                        Level6Num = Convert.ToInt32(data["list"]["prize6"]["bet"].Value.Replace(",", string.Empty)
                                                    .Replace("注", string.Empty));
                        Level6Money = Convert.ToDecimal(data["list"]["prize6"]["prize"].Value.Replace(",", string.Empty)
                                                        .Replace("元", string.Empty));
                        Level7Num = Convert.ToInt32(data["list"]["prize7"]["bet"].Value.Replace(",", string.Empty)
                                                    .Replace("注", string.Empty));
                        Level7Money = Convert.ToDecimal(data["list"]["prize7"]["prize"].Value.Replace(",", string.Empty)
                                                        .Replace("元", string.Empty));
                        model.Spare = string.Format(
                            "{0},{1}^一等奖|{2}|{3},二等奖|{4}|{5},三等奖|{6}|{7},四等奖|{8}|{9},五等奖|{10}|{11},六等奖|{12}|{13},七等奖|{14}|{15}",
                            Sales, Jackpot, Level1Num, Level1Money, Level2Num, Level2Money, Level3Num, Level3Money,
                            Level4Num, Level4Money, Level5Num, Level5Money, Level6Num, Level6Money, Level7Num,
                            Level7Money);
                    }

                    return(true);
                }
            }
            catch (Exception ex)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过主站点完善开奖列表时发生错误,错误信息【{1}】", Config.Area + Config.LotteryName, ex.Message));
            }

            return(false);
        }
Esempio n. 18
0
        /// <summary>
        ///     获取主站开奖列表数据
        /// </summary>
        /// <returns></returns>
        private List <OpenCode8DTModel> GetOpenListFromBackUrl()
        {
            var result = new List <OpenCode8DTModel>();

            try
            {
                var htmlResource = NetHelper.GetBaiDuLeCaiResponse(Config.BackUrl);
                if (htmlResource == null)
                {
                    return(result);
                }

                var doc = new HtmlDocument();
                doc.LoadHtml(htmlResource);
                var tables = doc.DocumentNode.SelectNodes("//table[@class]");
                if (tables == null)
                {
                    return(result);
                }

                var trs = tables[0].ChildNodes.Select(w => w).ToList();
                trs.RemoveAll(w => w.Name != "tr");
                trs.RemoveAll(w => w.GetAttributeValue("class", "") == "th kj-bd");
                foreach (var item in trs)
                {
                    var tds = item.ChildNodes.Select(w => w).ToList();
                    tds.RemoveAll(w => w.Name != "td");
                    if (tds.Count != 10)
                    {
                        continue;
                    }
                    var qihao       = tds[0].InnerText.Substring(2);
                    var kaijianghao = tds[1].InnerText.Trim(); //010203040506 格式

                    var opentime = tds[9].InnerText.Trim();
                    var tmp      = new OpenCode8DTModel
                    {
                        Term     = long.Parse(qihao),
                        OpenTime = DateTime.Parse(opentime)
                    };
                    tmp.OpenCode1 = int.Parse(kaijianghao.Substring(0, 2));
                    tmp.OpenCode2 = int.Parse(kaijianghao.Substring(2, 2));
                    tmp.OpenCode3 = int.Parse(kaijianghao.Substring(4, 2));
                    tmp.OpenCode4 = int.Parse(kaijianghao.Substring(6, 2));
                    tmp.OpenCode5 = int.Parse(kaijianghao.Substring(8, 2));
                    tmp.OpenCode6 = int.Parse(kaijianghao.Substring(10, 2));
                    tmp.OpenCode7 = int.Parse(kaijianghao.Substring(12, 2));
                    tmp.OpenCode8 = int.Parse(kaijianghao.Substring(14, 2));
                    OptimizeBackModel(ref tmp, item);
                    result.Add(tmp);
                }

                var checkDataHelper = new CheckDataHelper();
                var dbdata          = services.GetListS <OpenCode8DTModel>(currentLottery)
                                      .ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr());
                checkDataHelper.CheckData(dbdata, result.ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr()),
                                          Config.Area, currentLottery);
                result = result.OrderByDescending(S => S.Term).ToList();
            }
            catch (Exception ex)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过备用站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ex.Message));
            }

            return(result);
        }