示例#1
0
文件: DF6J1Job.cs 项目: PenAndy/SCC
 /// <summary>
 ///     通过主站点爬取开奖数据
 ///     (江苏福彩网)
 /// </summary>
 private void DoTodayJobByMainUrl()
 {
     if (!string.IsNullOrEmpty(Config.MainUrl))
     {
         var OpenList = GetOpenListFromMainUrl(Config.MainUrl);
         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;
         OpenCode7DTModel matchItem = null;
         for (var i = startQiNum; i <= newestQiNum; i++)
         {
             getQiHao  = LatestItem.Term.ToString().Substring(0, 4) + i.ToString().PadLeft(3, '0');
             matchItem = OpenList.FirstOrDefault(R => R.Term.ToString() == getQiHao);
             if (matchItem != null && OptimizeMainModel(ref matchItem) &&
                 services.AddDTOpen7Code(currentLottery, matchItem))
             {
                 //Do Success Log
                 log.Info(GetType(), CommonHelper.GetJobMainLogInfo(Config, getQiHao));
                 LatestItem = matchItem;
                 isGetData  = true;
             }
         }
     }
 }
示例#2
0
文件: DLTJob.cs 项目: PenAndy/SCC
 /// <summary>
 ///     通过主站点爬取开奖数据
 ///     (福建体彩网)
 /// </summary>
 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;
         OpenCode7DTModel matchItem = null;
         for (var i = startQiNum; i <= newestQiHao; i++)
         {
             getQiHao  = i.ToString();
             matchItem = openList.FirstOrDefault(r => r.Term.ToString() == getQiHao);
             if (matchItem != null && services.AddDTOpen7Code(currentLottery, matchItem))
             {
                 log.Info(GetType(), CommonHelper.GetJobMainLogInfo(Config, getQiHao));
                 LatestItem = matchItem;
                 isGetData  = true;
             }
         }
     }
 }
示例#3
0
文件: SSQJob.cs 项目: PenAndy/SCC
        /// <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 OpenCode7DTModel;
            try
            {
                //服务启动时配置初始数据
                if (LatestItem == null)
                {
                    LatestItem = services.GetOpenCode7DTLastItem(currentLottery);
                    if (LatestItem == null)
                    {
                        LatestItem = new OpenCode7DTModel
                        {
                            Term     = CommonHelper.GenerateQiHaoYYYYQQQ(0),
                            OpenTime = new DateTime(CommonHelper.SCCSysDateTime.Year, 1, 1)
                        }
                    }
                    ;
                }

                //程序时间第二天,程序根据配置检查是否昨天有开奖
                isGetData = false;
                if (CommonHelper.CheckDTIsNeedGetData(Config))
                {
                    DoMainUrl();
                }
                if (!LatestItem.Term.ToString().StartsWith(CommonHelper.SCCSysDateTime.ToString("yy")))
                {
                    LatestItem = new OpenCode7DTModel
                    {
                        Term     = CommonHelper.GenerateQiHaoYYYYQQQ(0),
                        OpenTime = new DateTime(CommonHelper.SCCSysDateTime.Year, 1, 1)
                    }
                }
                ;
                //当今日开奖并且当前时间是晚上8点过后开始抓取
                if (CommonHelper.CheckTodayIsOpenDay(Config) && CommonHelper.SCCSysDateTime.Hour > 12)
                {
                    DoMainUrl();
                }
                //

                //更新最后一期的开机号
                CheckGetKaiJiHao();
            }
            catch (Exception ex)
            {
                log.Error(GetType(), string.Format("【{0}】抓取时发生错误,错误信息【{1}】", Config.Area + currentLottery, ex.Message));
            }

            //保存最新期号
            context.JobDetail.JobDataMap["LatestItem"] = LatestItem;
        }
示例#4
0
文件: DF6J1Job.cs 项目: PenAndy/SCC
        /// <summary>
        ///     通过备用地址抓取错误期号列表中每一个期号
        ///     (百度乐彩)
        /// </summary>
        private void DoYesterdayFailedListByBackUrl()
        {
            if (!string.IsNullOrEmpty(Config.BackUrl) && FailedQiHaoList.Count > 0)
            {
                var OpenList = GetOpenListFromBackUrl();
                if (OpenList.Count == 0)
                {
                    return;                      //无抓取数据
                }
                OpenCode7DTModel matchItem = null;
                var SuccessList            = new List <string>();
                foreach (var failedQiHao in FailedQiHaoList)
                {
                    matchItem = OpenList.FirstOrDefault(R => R.Term.ToString() == failedQiHao);
                    if (matchItem != null && services.AddDTOpen7Code(currentLottery, matchItem))
                    {
                        //Do Success Log
                        log.Info(GetType(), CommonHelper.GetJobMainLogInfo(Config, failedQiHao));
                        if (matchItem.Term > LatestItem.Term)
                        {
                            LatestItem = matchItem;
                        }
                        SuccessList.Add(failedQiHao);
                        isGetData = true;
                    }
                }

                foreach (var successQiHao in SuccessList)
                {
                    FailedQiHaoList.Remove(successQiHao);
                }
            }
        }
示例#5
0
        private List <OpenCode7DTModel> GetOpenListFromBackUrl()
        {
            var result = new List <OpenCode7DTModel>();

            try
            {
                var url = Config.BackUrl + "?lid=10048&page=1";

                var htmlResource = NetHelper.GetBaiDuLeCaiResponse(url);
                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();
                trs.RemoveAll(w => w.GetAttributeValue("class", "") != "");
                foreach (var item in trs)
                {
                    var tds         = item.ChildNodes.Where(w => w.Name == "td").ToList();
                    var qihao       = tds[0].InnerText.Trim().Substring(2);
                    var kaijianghao = tds[1].InnerText.Trim();
                    var opentime    = tds[9].InnerText.Trim();
                    var tmp         = new OpenCode7DTModel
                    {
                        Term     = long.Parse(qihao),
                        OpenTime = DateTime.Parse(opentime)
                    };
                    tmp.OpenCode1 = int.Parse(kaijianghao.Substring(0, 1));
                    tmp.OpenCode2 = int.Parse(kaijianghao.Substring(1, 1));
                    tmp.OpenCode3 = int.Parse(kaijianghao.Substring(2, 1));
                    tmp.OpenCode4 = int.Parse(kaijianghao.Substring(3, 1));
                    tmp.OpenCode5 = int.Parse(kaijianghao.Substring(4, 1));
                    tmp.OpenCode6 = int.Parse(kaijianghao.Substring(5, 1));
                    tmp.OpenCode7 = int.Parse(kaijianghao.Substring(6, 1));
                    OptimizeBackModel(ref tmp, item);
                    result.Add(tmp);
                }

                var checkDataHelper = new CheckDataHelper();
                var dbdata          = services.GetListS <OpenCode7DTModel>(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(typeof(JSTC7WSJob),
                          string.Format("【{0}】通过备用站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ex.Message));
            }

            return(result);
        }
示例#6
0
 private void DoBackUrl()
 {
     if (!string.IsNullOrEmpty(Config.BackUrl))
     {
         var OpenList = GetOpenListFromBackUrl();
         if (OpenList.Count == 0)
         {
             return;                      //无抓取数据
         }
         var newestQiHao = OpenList.First().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;
         OpenCode7DTModel 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.AddDTOpen7Code(currentLottery, matchItem))
             {
                 //Do Success Log
                 log.Info(GetType(), CommonHelper.GetJobBackLogInfo(Config, getQiHao));
                 LatestItem = matchItem;
                 isGetData  = true;
             }
         }
     }
 }
示例#7
0
文件: ZJTC6J1Job.cs 项目: PenAndy/SCC
        /// <summary>
        ///     获取主站开奖列表数据
        /// </summary>
        /// <param name="mainUrl">主站地址</param>
        /// <returns></returns>
        private List <OpenCode7DTModel> GetOpenListFromMainUrl(string mainUrl)
        {
            var result = new List <OpenCode7DTModel>();

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

                var doc = new HtmlDocument();
                doc.LoadHtml(htmlResource);
                var tbody = doc.DocumentNode.SelectSingleNode("//tbody");
                if (tbody == null)
                {
                    return(result);
                }
                var trs = tbody.ChildNodes.Where(N => N.Name.ToLower() == "tr").ToList();
                foreach (var item in trs)
                {
                    var tds         = item.ChildNodes.Where(w => w.Name == "td").ToList();
                    var qihao       = tds[0].InnerText.Trim();
                    var kaijianghao = tds[1].InnerText.Trim().Replace(" ", "");
                    var opentime    = tds[10].InnerText.Trim();
                    var tmp         = new OpenCode7DTModel
                    {
                        Term     = long.Parse(qihao),
                        OpenTime = DateTime.Parse(opentime)
                    };
                    tmp.OpenCode1 = int.Parse(kaijianghao.Substring(0, 1));
                    tmp.OpenCode2 = int.Parse(kaijianghao.Substring(1, 1));
                    tmp.OpenCode3 = int.Parse(kaijianghao.Substring(2, 1));
                    tmp.OpenCode4 = int.Parse(kaijianghao.Substring(3, 1));
                    tmp.OpenCode5 = int.Parse(kaijianghao.Substring(4, 1));
                    tmp.OpenCode6 = int.Parse(kaijianghao.Substring(5, 1));
                    tmp.OpenCode7 = int.Parse(kaijianghao.Substring(6, 1));
                    OptimizeMainModel(ref tmp, item);
                    result.Add(tmp);
                }

                var checkDataHelper = new CheckDataHelper();

                var dbdata = services.GetListS <OpenCode7DTModel>(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);
        }
示例#8
0
        /// <summary>
        ///     完善主站江苏体彩7位数开奖详情信息
        /// </summary>
        /// <param name="model"></param>
        private bool OptimizeBackModel(ref OpenCode7DTModel 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);
        }
示例#9
0
        private List <OpenCode7DTModel> GetOpenListFromMainUrl(string mainUrl)
        {
            var result = new List <OpenCode7DTModel>();

            try
            {
                var url          = new Uri(mainUrl);
                var htmlResource = NetHelper.GetUrlResponse(mainUrl, Encoding.GetEncoding("utf-8"));
                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();
                OpenCode7DTModel 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 < 14)
                    {
                        continue;
                    }
                    model = new OpenCode7DTModel();
                    nodeA = tds[12].ChildNodes.Where(n => n.Name == "a").FirstOrDefault();
                    if (nodeA == null)
                    {
                        continue;
                    }
                    model.Term = Convert.ToInt64(tds[0].InnerText.Trim());

                    model.DetailUrl = new Uri(url, optimizeUrl).AbsoluteUri;
                    model.OpenTime  = Convert.ToDateTime(tds[1].InnerText.Substring(0, 10));
                    if (tds[2].ChildNodes.Count == 0)
                    {
                        continue;
                    }
                    var opencodeNode = tds[2].ChildNodes.Where(n => n.Name.ToLower() == "em").ToList();
                    if (opencodeNode.Count < 7)
                    {
                        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());

                    var details = GetKaijiangDetails(tds);
                    model.Spare = details;
                    result.Add(model);
                }

                var checkDataHelper = new CheckDataHelper();
                var dbdata          = services.GetListS <OpenCode7DTModel>(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);
        }
示例#10
0
文件: DF6J1Job.cs 项目: PenAndy/SCC
        /// <summary>
        ///     获取备用站点开奖列表数据
        /// </summary>
        /// <returns></returns>
        private List <OpenCode7DTModel> GetOpenListFromBackUrl()
        {
            var result = new List <OpenCode7DTModel>();

            try
            {
                var url          = string.Format("{0}&page = 1", Config.BackUrl);
                var htmlResource = NetHelper.GetUrlResponse(url, Encoding.Default);
                if (!string.IsNullOrEmpty(htmlResource))
                {
                    var doc = new HtmlDocument();
                    doc.LoadHtml(htmlResource);
                    var tables = doc.DocumentNode.SelectNodes("//table[@class]");
                    foreach (var item in tables[0].ChildNodes)
                    {
                        if (item.Name == "tr")
                        {
                            if (item.GetAttributeValue("class", "") == "")
                            {
                                var tds = item.ChildNodes.Select(w => w).ToList();
                                tds.RemoveAll(w => w.Name != "td");
                                if (tds.Count != 10)
                                {
                                    continue;
                                }
                                var qihao  = tds[0].InnerText;
                                var code   = tds[1].InnerText;
                                var optime = tds[9].InnerText;
                                if (code.Length > 6)
                                {
                                    var tmp = new OpenCode7DTModel
                                    {
                                        Term     = long.Parse(qihao),
                                        OpenTime = DateTime.Parse(optime)
                                    };
                                    tmp.OpenCode1 = int.Parse(code.Substring(0, 1));
                                    tmp.OpenCode2 = int.Parse(code.Substring(1, 1));
                                    tmp.OpenCode3 = int.Parse(code.Substring(2, 1));
                                    tmp.OpenCode4 = int.Parse(code.Substring(3, 1));
                                    tmp.OpenCode5 = int.Parse(code.Substring(4, 1));
                                    tmp.OpenCode6 = int.Parse(code.Substring(5, 1));
                                    tmp.OpenCode7 = int.Parse(code.Substring(6));
                                    var entity = new KaijiangDetailsEntity();
                                    entity.KaiJiangItems = new List <Kaijiangitem>();
                                    var xiaoshoue   = tds[2].InnerText.Replace(',', ' ').Replace('元', ' ').Trim();
                                    var yidengjiang = new Kaijiangitem
                                    {
                                        Name       = "一等奖",
                                        Total      = tds[3].InnerText.Trim(),
                                        TotalMoney = tds[4].InnerText.Trim()
                                    };
                                    entity.KaiJiangItems.Add(yidengjiang);
                                    var erdengjiang = new Kaijiangitem
                                    {
                                        Name       = "二等奖",
                                        Total      = tds[5].InnerText.Trim(),
                                        TotalMoney = tds[6].InnerText.Trim()
                                    };
                                    entity.KaiJiangItems.Add(erdengjiang);
                                    var sandengjiang = new Kaijiangitem
                                    {
                                        Name       = "三等奖",
                                        Total      = tds[7].InnerText.Trim(),
                                        TotalMoney = tds[8].InnerText.Trim()
                                    };
                                    entity.KaiJiangItems.Add(sandengjiang);
                                    entity.Trje = xiaoshoue;
                                    entity.Gdje = "0";
                                    tmp.Spare   = entity.TryToJson();
                                    result.Add(tmp);
                                }
                            }
                        }
                    }

                    var checkDataHelper = new CheckDataHelper();
                    var dbdata          = services.GetListS <OpenCode7DTModel>(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);
        }
示例#11
0
        /// <summary>
        ///     获取备用站点开奖列表数据
        /// </summary>
        /// <returns></returns>
        private List <OpenCode7DTModel> GetOpenListFromMainUrl(string mainUrl)
        {
            var result = new List <OpenCode7DTModel>();

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

                var doc = new HtmlDocument();
                doc.LoadHtml(htmlResource);
                var div = doc.DocumentNode.SelectSingleNode("//div[@class='bd']");
                if (div == null)
                {
                    return(result);
                }

                var table = div.ChildNodes.Where(node => node.Name == "table").ToList();
                if (table == null)
                {
                    return(result);
                }
                var trs = table[0].ChildNodes.Where(node => node.Name == "tr").ToList();
                OpenCode7DTModel model = null;
                var optimizeUrl        = string.Empty;
                for (var i = 1; i < trs.Count; i++) //第一二行为表头
                {
                    var tds = trs[i].ChildNodes.Where(node => node.Name == "td").ToList();
                    if (tds.Count < 23)
                    {
                        continue;
                    }
                    model = new OpenCode7DTModel();
                    var QiHao = tds[0].InnerText.Substring(0, 4) + tds[1].InnerText.Trim().Substring(0, 3);
                    model.Term = Convert.ToInt64(QiHao);

                    model.OpenTime = Convert.ToDateTime(tds[0].InnerText);
                    var openCodeString = tds[2].InnerText.Trim();

                    model.OpenCode1 = Convert.ToInt32(openCodeString.Substring(0, 2));
                    model.OpenCode2 = Convert.ToInt32(openCodeString.Substring(3, 2));
                    model.OpenCode3 = Convert.ToInt32(openCodeString.Substring(6, 2));
                    model.OpenCode4 = Convert.ToInt32(openCodeString.Substring(9, 2));
                    model.OpenCode5 = Convert.ToInt32(openCodeString.Substring(12, 2));
                    model.OpenCode6 = Convert.ToInt32(openCodeString.Substring(15, 2));
                    model.OpenCode7 = Convert.ToInt32(tds[3].InnerText.Trim().Substring(0, 2));
                    model.Spare     = string.Empty;
                    if (result.SingleOrDefault(w => w.Term == model.Term) == null)
                    {
                        result.Add(model);
                    }
                }

                var checkDataHelper = new CheckDataHelper();
                var dbdata          = services.GetListS <OpenCode7DTModel>(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);
        }
示例#12
0
文件: DF6J1Job.cs 项目: PenAndy/SCC
        /// <summary>
        ///     完善主站江苏体彩7位数开奖详情信息
        /// </summary>
        /// <param name="model"></param>
        private bool OptimizeMainModel(ref OpenCode7DTModel model)
        {
            var url = string.Format("http://www.jslottery.com/Lottery/LotteryDetails?PlayType=6&Issue={0}", model.Term);

            try
            {
                var htmlResource = NetHelper.GetUrlResponse(url);


                if (!string.IsNullOrEmpty(htmlResource))
                {
                    var entity = new KaijiangDetailsEntity
                    {
                        KaiJiangItems = new List <Kaijiangitem>()
                    };
                    var doc = new HtmlDocument();
                    doc.LoadHtml(htmlResource);
                    var tables = doc.DocumentNode.SelectNodes("//table");
                    if (tables.Count < 5)
                    {
                        return(false);
                    }
                    var     trs = tables[4].ChildNodes[0].ChildNodes.Where(S => S.Name.ToLower() == "tr").ToList();
                    decimal Sales = 0, Jackpot = 0;
                    foreach (var tr in trs)
                    {
                        var tds = tr.ChildNodes.Where(S => S.Name.ToLower() == "td").ToList();
                        if (tds.Count < 3)
                        {
                            continue;
                        }
                        if (tds[0].InnerText == "一等奖")
                        {
                            var tmp = new Kaijiangitem
                            {
                                Name       = "一等奖",
                                Total      = tds[1].InnerText.Trim(),
                                TotalMoney = tds[2].InnerText.Trim()
                            };
                            entity.KaiJiangItems.Add(tmp);
                            // Level1Num = Convert.ToInt32(tds[1].InnerText);
                            //Level1Money = Convert.ToInt32(tds[2].InnerText);
                        }
                        else if (tds[0].InnerText == "二等奖")
                        {
                            var tmp = new Kaijiangitem
                            {
                                Name       = "二等奖",
                                Total      = tds[1].InnerText.Trim(),
                                TotalMoney = tds[2].InnerText.Trim()
                            };
                            entity.KaiJiangItems.Add(tmp);
                        }
                        else if (tds[0].InnerText == "三等奖")
                        {
                            var tmp = new Kaijiangitem
                            {
                                Name       = "三等奖",
                                Total      = tds[1].InnerText.Trim(),
                                TotalMoney = tds[2].InnerText.Trim()
                            };
                            entity.KaiJiangItems.Add(tmp);
                        }
                        else if (tds[0].InnerText == "四等奖")
                        {
                            var tmp = new Kaijiangitem
                            {
                                Name       = "四等奖",
                                Total      = tds[1].InnerText.Trim(),
                                TotalMoney = tds[2].InnerText.Trim()
                            };
                            entity.KaiJiangItems.Add(tmp);
                        }
                        else if (tds[0].InnerText == "五等奖")
                        {
                            var tmp = new Kaijiangitem
                            {
                                Name       = "五等奖",
                                Total      = tds[1].InnerText.Trim(),
                                TotalMoney = tds[2].InnerText.Trim()
                            };
                            entity.KaiJiangItems.Add(tmp);
                        }
                        else if (tds[0].InnerText == "六等奖")
                        {
                            var tmp = new Kaijiangitem
                            {
                                Name       = "六等奖",
                                Total      = tds[1].InnerText.Trim(),
                                TotalMoney = tds[2].InnerText.Trim()
                            };
                            entity.KaiJiangItems.Add(tmp);
                        }
                    }

                    var reg   = new Regex(@"本期投注总额<span>([\d.,]*?)</span>");
                    var match = reg.Match(htmlResource);
                    if (match.Success)
                    {
                        Sales = Convert.ToDecimal(match.Result("$1").Replace(",", string.Empty)) * 10000;
                    }
                    else
                    {
                        reg   = new Regex(@"本期投注总额<span lang=""EN-US"">([\d.,]*?)</span>");
                        match = reg.Match(htmlResource);
                        if (match.Success)
                        {
                            Sales = Convert.ToDecimal(match.Result("$1").Replace(",", string.Empty)) * 10000;
                        }
                    }

                    Jackpot     = Convert.ToDecimal(model.Spare.Replace(",", string.Empty)) * 10000;
                    entity.Gdje = Jackpot.ToString();
                    entity.Trje = Sales.ToString();
                    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);
                    return(true);
                }
            }
            catch (Exception ex)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过主站点完善抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ex.Message));
            }

            return(false);
        }
示例#13
0
文件: DF6J1Job.cs 项目: PenAndy/SCC
        /// <summary>
        ///     获取主站开奖列表数据
        /// </summary>
        /// <param name="mainUrl">主站地址</param>
        /// <returns></returns>
        private List <OpenCode7DTModel> GetOpenListFromMainUrl(string mainUrl)
        {
            var result = new List <OpenCode7DTModel>();

            try
            {
                var postData     = "PlayType=6&currentPage=1&pageSize=200";
                var htmlResource = NetHelper.GetUrlResponse(mainUrl, "POST", postData, Encoding.UTF8);
                if (htmlResource == null)
                {
                    return(result);
                }

                var obj                       = htmlResource.JsonToEntity <JObject>();
                var lotteryList               = obj["LotteryNumberList"];
                OpenCode7DTModel model        = null;
                string[]         openCodeList = null;
                var issue                     = string.Empty;
                foreach (var item in lotteryList)
                {
                    issue = item["Issue"].ToString();
                    if (issue.StartsWith((CommonHelper.SCCSysDateTime.Year - 1).ToString()))
                    {
                        break;                                                                      //只抓取今年数据
                    }
                    model          = new OpenCode7DTModel();
                    model.Term     = Convert.ToInt64(issue);
                    model.OpenTime = Convert.ToDateTime(item["LotteryDate"].ToString());
                    openCodeList   = item["BasicNumber"].ToString().Trim().Replace("[", string.Empty)
                                     .Replace("]", string.Empty).Replace("\r\n", string.Empty).Replace("\"", string.Empty)
                                     .Split(',');
                    if (openCodeList.Length != 6)
                    {
                        continue;
                    }
                    model.OpenCode1 = Convert.ToInt32(openCodeList[0]);
                    model.OpenCode2 = Convert.ToInt32(openCodeList[1]);
                    model.OpenCode3 = Convert.ToInt32(openCodeList[2]);
                    model.OpenCode4 = Convert.ToInt32(openCodeList[3]);
                    model.OpenCode5 = Convert.ToInt32(openCodeList[4]);
                    model.OpenCode6 = Convert.ToInt32(openCodeList[5]);
                    model.OpenCode7 = ConvertShengXiaoToNumber(item["SpecialNumber"].ToString());
                    model.Spare     = string.IsNullOrEmpty(item["PrizePool"].ToString().Replace("万元", string.Empty))
                        ? "0"
                        : item["PrizePool"].ToString().Replace("万元", string.Empty);
                    result.Add(model);
                }

                var checkDataHelper = new CheckDataHelper();
                var dbdata          = services.GetListS <OpenCode7DTModel>(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);
        }
示例#14
0
文件: DLTJob.cs 项目: PenAndy/SCC
        /// <summary>
        /// 根据主站获取数据列表
        /// </summary>
        /// <param name="mainUrl"></param>
        /// <returns></returns>
        private List <OpenCode7DTModel> GetOpenListFromMainUrl(string mainUrl)
        {
            var result = new List <OpenCode7DTModel>();

            try
            {
                var url          = new Uri(mainUrl);
                var htmlResource = NetHelper.GetUrlResponse(mainUrl, Encoding.GetEncoding("utf-8"));
                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();
                OpenCode7DTModel model = null;
                HtmlNode         nodeA = null;
                var optimizeUrl        = string.Empty;
                for (var i = 0; i < trs.Count; i++) //第一二行为表头
                {
                    var tds = trs[i].ChildNodes.Where(node => node.Name == "td").ToList();
                    if (tds.Count < 9)
                    {
                        continue;
                    }
                    model = new OpenCode7DTModel();
                    var Term = tds[0].InnerText.Trim();
                    if (Term.Length <= 7)
                    {
                        model.Term = Convert.ToInt64("20" + Term);
                    }
                    else
                    {
                        model.Term = Convert.ToInt64(Term);
                    }
                    optimizeUrl    = model.Term.ToString();
                    model.OpenTime = Convert.ToDateTime(tds[1].InnerText.Substring(0, 5));
                    if (tds[2].ChildNodes.Count == 0)
                    {
                        continue;
                    }
                    var b    = tds[2].ChildNodes.Where(n => n.Name.ToLower() == "b").ToList();
                    var span = b[0].ChildNodes.Where(n => n.Name.ToLower() == "span").ToList();
                    model.OpenCode1 = Convert.ToInt32(span[0].InnerText.Replace(" ", "").Substring(0, 2).Trim());
                    model.OpenCode2 = Convert.ToInt32(span[0].InnerText.Replace(" ", "").Substring(2, 2).Trim());
                    model.OpenCode3 = Convert.ToInt32(span[0].InnerText.Replace(" ", "").Substring(4, 2).Trim());
                    model.OpenCode4 = Convert.ToInt32(span[0].InnerText.Replace(" ", "").Substring(6, 2).Trim());
                    model.OpenCode5 = Convert.ToInt32(span[0].InnerText.Replace(" ", "").Substring(8, 2).Trim());
                    model.OpenCode6 = Convert.ToInt32(span[1].InnerText.Replace(" ", "").Substring(0, 2).Trim());
                    model.OpenCode7 = Convert.ToInt32(span[1].InnerText.Replace(" ", "").Substring(2, 2).Trim());
                    var details = GetKaijiangDetails(optimizeUrl);
                    model.Spare = details;
                    result.Add(model);
                }
                var checkDataHelper = new CheckDataHelper();
                var dbdata          = services.GetListS <OpenCode7DTModel>(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);
        }
示例#15
0
文件: ZJTC6J1Job.cs 项目: PenAndy/SCC
        /// <summary>
        ///     完善备用站点浙江体彩6+1开奖实体信息
        /// </summary>
        /// <param name="model"></param>
        private bool OptimizeBackModel(ref OpenCode7DTModel model)
        {
            try
            {
                var entity = new KaijiangDetailsEntity();
                entity.KaiJiangItems = new List <Kaijiangitem>();
                var htmlResource = NetHelper.GetUrlResponse(model.DetailUrl);
                if (!string.IsNullOrEmpty(htmlResource))
                {
                    var doc = new HtmlDocument();
                    doc.LoadHtml(htmlResource);
                    var tables = doc.DocumentNode.SelectNodes("//table");
                    if (tables.Count < 1)
                    {
                        return(false);
                    }
                    var trs = tables[0].ChildNodes.Where(N => N.Name.ToLower() == "tr").ToList();
                    for (var i = 1; i < trs.Count; i++) //第一行为表头
                    {
                        var tds = trs[i].ChildNodes.Where(N => N.Name.ToLower() == "td").ToList();
                        if (tds.Count < 4)
                        {
                            continue;
                        }
                        if (tds[1].InnerText == "特等奖")
                        {
                            var tmp = new Kaijiangitem
                            {
                                Name       = "特等奖",
                                Total      = tds[2].InnerText.Replace("注", string.Empty).Replace(",", string.Empty).Trim(),
                                TotalMoney =
                                    tds[3].InnerText.Replace("元", string.Empty).Trim() == "--"
                                        ? "0"
                                        : tds[3].InnerText.Replace("元", string.Empty).Trim()
                            };
                            entity.KaiJiangItems.Add(tmp);
                            //Level1Num = Convert.ToInt32(tds[2].InnerText.Replace("注", string.Empty).Replace(",", string.Empty).Trim());
                            // Level1Money = Convert.ToDecimal(tds[3].InnerText.Replace("元", string.Empty).Trim() == "--" ? "0" : tds[3].InnerText.Replace("元", string.Empty).Trim());
                        }
                        else if (tds[1].InnerText == "一等奖")
                        {
                            var tmp = new Kaijiangitem
                            {
                                Name       = "一等奖",
                                Total      = tds[2].InnerText.Replace("注", string.Empty).Replace(",", string.Empty).Trim(),
                                TotalMoney =
                                    tds[3].InnerText.Replace("元", string.Empty).Trim() == "--"
                                        ? "0"
                                        : tds[3].InnerText.Replace("元", string.Empty).Trim()
                            };
                            entity.KaiJiangItems.Add(tmp);
                        }
                        else if (tds[1].InnerText == "二等奖")
                        {
                            var tmp = new Kaijiangitem
                            {
                                Name       = "二等奖",
                                Total      = tds[2].InnerText.Replace("注", string.Empty).Replace(",", string.Empty).Trim(),
                                TotalMoney =
                                    tds[3].InnerText.Replace("元", string.Empty).Trim() == "--"
                                        ? "0"
                                        : tds[3].InnerText.Replace("元", string.Empty).Trim()
                            };
                            entity.KaiJiangItems.Add(tmp);
                        }
                        else if (tds[1].InnerText == "三等奖")
                        {
                            var tmp = new Kaijiangitem
                            {
                                Name       = "三等奖",
                                Total      = tds[2].InnerText.Replace("注", string.Empty).Replace(",", string.Empty).Trim(),
                                TotalMoney =
                                    tds[3].InnerText.Replace("元", string.Empty).Trim() == "--"
                                        ? "0"
                                        : tds[3].InnerText.Replace("元", string.Empty).Trim()
                            };
                            entity.KaiJiangItems.Add(tmp);
                        }
                        else if (tds[1].InnerText == "四等奖")
                        {
                            var tmp = new Kaijiangitem
                            {
                                Name       = "四等奖",
                                Total      = tds[2].InnerText.Replace("注", string.Empty).Replace(",", string.Empty).Trim(),
                                TotalMoney =
                                    tds[3].InnerText.Replace("元", string.Empty).Trim() == "--"
                                        ? "0"
                                        : tds[3].InnerText.Replace("元", string.Empty).Trim()
                            };
                            entity.KaiJiangItems.Add(tmp);
                        }
                        else if (tds[1].InnerText == "五等奖")
                        {
                            var tmp = new Kaijiangitem
                            {
                                Name       = "五等奖",
                                Total      = tds[2].InnerText.Replace("注", string.Empty).Replace(",", string.Empty).Trim(),
                                TotalMoney =
                                    tds[3].InnerText.Replace("元", string.Empty).Trim() == "--"
                                        ? "0"
                                        : tds[3].InnerText.Replace("元", string.Empty).Trim()
                            };
                            entity.KaiJiangItems.Add(tmp);
                        }

                        var reg1   = new Regex(@"投注总额:([\d,.]*?) 元");
                        var match1 = reg1.Match(htmlResource);
                        if (match1.Success)
                        {
                            var sales = match1.Result("$1");
                            // Sales = Convert.ToDecimal(sales);
                            entity.Trje = sales;
                        }

                        var reg2   = new Regex(@"奖池资金累计金额:([\d,.]*?) 元");
                        var match2 = reg2.Match(htmlResource);
                        if (match2.Success)
                        {
                            var jackpot = match2.Result("$1");
                            //Jackpot = Convert.ToDecimal(jackpot);
                            entity.Gdje = jackpot;
                        }

                        // 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);
                    }

                    model.Spare = entity.TryToJson();
                }

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

            return(false);
        }
示例#16
0
文件: ZJTC6J1Job.cs 项目: PenAndy/SCC
        /// <summary>
        ///     获取备用站点开奖列表数据
        /// </summary>
        /// <param name="backUrl">备用站点</param>
        /// <returns></returns>
        private List <OpenCode7DTModel> GetOpenListFromBackUrl(string backUrl)
        {
            var result = new List <OpenCode7DTModel>();

            try
            {
                var htmlResource = NetHelper.GetUrlResponse(backUrl);
                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.ToLower() == "tr").ToList();
                OpenCode7DTModel model = null;
                var lastYear           = (CommonHelper.SCCSysDateTime.Year - 1).ToString().Substring(2);
                for (var i = 0; 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.ToLower() == "td").ToList();
                    if (tds.Count < 11)
                    {
                        continue;
                    }
                    if (tds[0].InnerText.Trim().StartsWith(lastYear))
                    {
                        break;
                    }
                    model          = new OpenCode7DTModel();
                    model.OpenTime = Convert.ToDateTime(tds[9].InnerText.Trim());
                    model.Term     = Convert.ToInt64(tds[0].InnerText.Trim());
                    var opencodeNode = tds[1].ChildNodes.Where(n => n.Name.ToLower() == "i").ToList();
                    if (opencodeNode.Count < 7)
                    {
                        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.DetailUrl = backUrl + model.Term + "/";
                    OptimizeBackModel(ref model);
                    result.Add(model);
                }

                var checkDataHelper = new CheckDataHelper();
                var dbdata          = services.GetListS <OpenCode7DTModel>(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);
        }
示例#17
0
        /// <summary>
        ///     获取备用站点开奖列表数据
        /// </summary>
        /// <returns></returns>
        private List <OpenCode7DTModel> GetOpenListFromBackUrl(string BackUrl)
        {
            var result = new List <OpenCode7DTModel>();

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

                var doc = new HtmlDocument();
                doc.LoadHtml(htmlResource);
                var table = doc.DocumentNode.SelectNodes("//table[@border='1']");

                if (table == null)
                {
                    return(result);
                }
                var trs = table[1].ChildNodes.Where(s => s.Name.ToLower() == "tr").ToList();

                OpenCode7DTModel model = null;
                var optimizeUrl        = string.Empty;
                for (var i = 1; i < trs.Count; i++) //第一二行为表头
                {
                    var tds = trs[i].ChildNodes.Where(node => node.Name == "td").ToList();
                    if (tds.Count < 16)
                    {
                        continue;
                    }
                    model = new OpenCode7DTModel();



                    model.OpenTime = Convert.ToDateTime(tds[1].InnerText);
                    model.Term     = Convert.ToInt64(TermSet(tds[2].InnerText));
                    var openCodeString = tds[3].InnerText.Replace("shownumber(\"", "").Replace("\")", "").Trim().Split(',');;


                    model.OpenCode1 = Convert.ToInt32(openCodeString[0]);
                    model.OpenCode2 = Convert.ToInt32(openCodeString[1]);
                    model.OpenCode3 = Convert.ToInt32(openCodeString[2]);
                    model.OpenCode4 = Convert.ToInt32(openCodeString[3]);
                    model.OpenCode5 = Convert.ToInt32(openCodeString[4]);
                    model.OpenCode6 = Convert.ToInt32(openCodeString[5]);
                    model.OpenCode7 = Convert.ToInt32(tds[4].InnerText.Replace("shownumber(\"", "").Replace("\")", "").Trim());
                    model.Spare     = string.Empty;
                    if (result.SingleOrDefault(w => w.Term == model.Term) == null)
                    {
                        result.Add(model);
                    }
                }

                var checkDataHelper = new CheckDataHelper();
                var dbdata          = services.GetListS <OpenCode7DTModel>(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);
        }
示例#18
0
        /// <summary>
        ///     副站数据爬取 地址:https://fx.cp2y.com/draw/history_10065_Y/
        /// </summary>
        /// <returns></returns>
        private List <OpenCode7DTModel> GetOpenListFromBackUrl()
        {
            var result = new List <OpenCode7DTModel>();

            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("//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;
                OpenCode7DTModel 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 OpenCode7DTModel();
                    term           = tds[0].InnerText.Trim();
                    model.OpenTime = Convert.ToDateTime(tds[1].InnerText.Trim());
                    model.Term     = Convert.ToInt64(term);
                    openCodeString = tds[2].InnerText.Replace("&nbsp;", "").Replace("\t\t    ", "").Trim();


                    model.OpenCode1 = Convert.ToInt32(openCodeString.Substring(0, 1));
                    model.OpenCode2 = Convert.ToInt32(openCodeString.Substring(1, 1));
                    model.OpenCode3 = Convert.ToInt32(openCodeString.Substring(2, 1));
                    model.OpenCode4 = Convert.ToInt32(openCodeString.Substring(3, 1));
                    model.OpenCode5 = Convert.ToInt32(openCodeString.Substring(4, 1));
                    model.OpenCode6 = Convert.ToInt32(openCodeString.Substring(5, 1));
                    model.OpenCode7 = Convert.ToInt32(openCodeString.Substring(6, 1));

                    //组装开奖详情
                    result.Add(model);
                }

                var checkDataHelper = new CheckDataHelper();
                var dbdata          = services.GetListS <OpenCode7DTModel>(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);
        }
示例#19
0
        /// <summary>
        ///     副站数据爬取 地址:https://fx.cp2y.com/draw/history_10065_Y/
        /// </summary>
        /// <returns></returns>
        private List <OpenCode7DTModel> GetOpenListFromBackUrl()
        {
            var result = new List <OpenCode7DTModel>();

            try
            {
                var htmlResource = NetHelper.GetUrlResponse(Config.BackUrl, Encoding.GetEncoding("gb2312"));
                if (string.IsNullOrWhiteSpace(htmlResource))
                {
                    log.Warn(GetType(), string.Format("【{0}】通过备用站点抓取开奖列表未获取到数据。", Config.Area + currentLottery));
                    return(result);
                }

                var doc = new HtmlDocument();
                doc.LoadHtml(htmlResource);
                var table = doc.DocumentNode.SelectNodes("//tbody[@id='pagedata']");
                if (table == null)
                {
                    return(result);
                }
                var              trs = table[0].ChildNodes.Where(S => S.Name.ToLower() == "tr").ToList();
                List <HtmlNode>  tds = null;
                string           term = string.Empty, openCodeString = string.Empty, optimizeUrl = string.Empty;
                decimal          sales = 0, pool = 0;
                OpenCode7DTModel model = null;
                HtmlNode         nodeA = 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 OpenCode7DTModel();
                    term  = tds[1].InnerText.Trim();
                    if (term.StartsWith((CommonHelper.SCCSysDateTime.Year - 1).ToString()))
                    {
                        break;
                    }

                    model.Term      = Convert.ToInt64(term);
                    openCodeString  = tds[2].InnerText.Replace("&nbsp;", "").Trim();
                    model.OpenCode1 = Convert.ToInt32(openCodeString.Substring(0, 1));
                    model.OpenCode2 = Convert.ToInt32(openCodeString.Substring(1, 1));
                    model.OpenCode3 = Convert.ToInt32(openCodeString.Substring(2, 1));
                    model.OpenCode4 = Convert.ToInt32(openCodeString.Substring(3, 1));
                    model.OpenCode5 = Convert.ToInt32(openCodeString.Substring(4, 1));
                    model.OpenCode6 = Convert.ToInt32(openCodeString.Substring(5, 1));
                    model.OpenCode7 = Convert.ToInt32(openCodeString.Substring(6, 1));
                    //组装开奖详
                    result.Add(model);
                }

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

            return(result);
        }
示例#20
0
        /// <summary>
        ///     完善主站江苏体彩7位数开奖详情信息
        /// </summary>
        /// <param name="model"></param>
        private bool OptimizeMainModel(ref OpenCode7DTModel model)
        {
            try
            {
                var entity = new KaijiangDetailsEntity();
                entity.KaiJiangItems = new List <Kaijiangitem>();
                var htmlResource = NetHelper.GetUrlResponse(model.DetailUrl);
                if (htmlResource == null)
                {
                    return(false);
                }
                if (!string.IsNullOrEmpty(htmlResource))
                {
                    var doc = new HtmlDocument();
                    doc.LoadHtml(htmlResource);
                    var table = doc.DocumentNode.SelectNodes("//table");
                    if (table != null && table.Count > 1)
                    {
                        var trs = table[1].ChildNodes.Where(N => N.Name.ToLower() == "tbody").First().ChildNodes
                                  .Where(N => N.Name.ToLower() == "tr").ToList();
                        for (var i = 0; i < trs.Count; i++)
                        {
                            var tds = trs[i].ChildNodes.Where(N => N.Name.ToLower() == "td").ToList();
                            if (tds[0].InnerText == "特等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name       = "特等奖",
                                    Total      = tds[1].InnerText.Replace(",", string.Empty).Replace("注", string.Empty),
                                    TotalMoney =
                                        tds[2].InnerText.Replace("元", string.Empty).Replace("--", "0").Replace(",", "")
                                        .Trim()
                                };
                                entity.KaiJiangItems.Add(tmp);
                                //Level1Num = Convert.ToInt32(tds[1].InnerText.Replace(",", string.Empty).Replace("注", string.Empty));
                                //Level1Money = Convert.ToDecimal(tds[2].InnerText.Replace("元", string.Empty));
                            }
                            else if (tds[0].InnerText == "一等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name       = "一等奖",
                                    Total      = tds[1].InnerText.Replace(",", string.Empty).Replace("注", string.Empty),
                                    TotalMoney =
                                        tds[2].InnerText.Replace("元", string.Empty).Replace("--", "0").Replace(",", "")
                                        .Trim()
                                };
                                entity.KaiJiangItems.Add(tmp);
                            }
                            else if (tds[0].InnerText == "二等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name       = "二等奖",
                                    Total      = tds[1].InnerText.Replace(",", string.Empty).Replace("注", string.Empty),
                                    TotalMoney =
                                        tds[2].InnerText.Replace("元", string.Empty).Replace("--", "0").Replace(",", "")
                                        .Trim()
                                };
                                entity.KaiJiangItems.Add(tmp);
                            }
                            else if (tds[0].InnerText == "三等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name       = "三等奖",
                                    Total      = tds[1].InnerText.Replace(",", string.Empty).Replace("注", string.Empty),
                                    TotalMoney =
                                        tds[2].InnerText.Replace("元", string.Empty).Replace("--", "0").Replace(",", "")
                                        .Trim()
                                };
                                entity.KaiJiangItems.Add(tmp);
                            }
                            else if (tds[0].InnerText == "四等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name       = "四等奖",
                                    Total      = tds[1].InnerText.Replace(",", string.Empty).Replace("注", string.Empty),
                                    TotalMoney =
                                        tds[2].InnerText.Replace("元", string.Empty).Replace("--", "0").Replace(",", "")
                                        .Trim()
                                };
                                entity.KaiJiangItems.Add(tmp);
                            }
                            else if (tds[0].InnerText == "五等奖")
                            {
                                var tmp = new Kaijiangitem
                                {
                                    Name       = "五等奖",
                                    Total      = tds[1].InnerText.Replace(",", string.Empty).Replace("注", string.Empty),
                                    TotalMoney =
                                        tds[2].InnerText.Replace("元", string.Empty).Replace("--", "0").Replace(",", "")
                                        .Trim()
                                };
                                entity.KaiJiangItems.Add(tmp);
                            }
                        }

                        var reg1   = new Regex(@"本省(区、市)销售额:([\s\S]*?)元");
                        var match1 = reg1.Match(htmlResource);
                        if (match1.Success)
                        {
                            //2016年182期及以前期数
                            //Sales = Convert.ToDecimal(match1.Result("$1"));
                            entity.Trje = match1.Result("$1");
                        }
                        else
                        {
                            //2016年183期及以后期数
                            reg1   = new Regex(@"本期销售金额:([\s\S]*?)元");
                            match1 = reg1.Match(htmlResource);
                            if (match1.Success)
                            {
                                entity.Trje = match1.Result("$1");
                            }
                        }

                        var ps        = table[1].ParentNode.ChildNodes.Where(N => N.Name.ToLower() == "p").ToList();
                        var potString = ps.Last().InnerHtml;
                        reg1   = new Regex(@"<br>([\s\S]*?)元");
                        match1 = reg1.Match(potString);
                        if (match1.Success)
                        {
                            var potValue = match1.Result("$1").Replace("&nbsp;", string.Empty);
                            if (potValue.Contains("<br>"))
                            {
                                // Jackpot = Convert.ToDecimal(potValue.Substring(potValue.IndexOf("<br>") + 4));
                                entity.Gdje = potValue.Substring(potValue.IndexOf("<br>") + 4);
                            }
                            else
                            {
                                // Jackpot = Convert.ToDecimal(potValue);
                                entity.Gdje = potValue;
                            }
                        }

                        model.Spare = entity.TryToJson();
                        return(true);
                    }
                }
            }
            catch (Exception ex)
            {
                log.Error(typeof(JSTC7WSJob),
                          string.Format("【{0}】通过主站点优化开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ex.Message));
            }

            return(false);
        }
示例#21
0
文件: ZJTC6J1Job.cs 项目: PenAndy/SCC
        /// <summary>
        ///     完善主站浙江体彩6+1开奖详情信息
        /// </summary>
        /// <param name="model"></param>
        private bool OptimizeMainModel(ref OpenCode7DTModel model, HtmlNode tr)
        {
            try
            {
                var tds    = tr.ChildNodes.Where(w => w.Name == "td").ToList();
                var entity = new KaijiangDetailsEntity();
                entity.KaiJiangItems = new List <Kaijiangitem>();
                var xiaoshoue      = tds[8].InnerText.Trim();
                var jiangchi       = (double.Parse(tds[9].InnerText.Trim()) * 10000).ToString();
                var tedengjiangary = tds[2].InnerText.Trim().Split('注', '元');

                var tedengjiang = new Kaijiangitem
                {
                    Name       = "特等奖",
                    Total      = tedengjiangary[0].Replace(",", string.Empty),
                    TotalMoney = tedengjiangary[1].Replace(",", string.Empty).Replace("\t", "")
                };
                entity.KaiJiangItems.Add(tedengjiang);
                var yidengjiangary = tds[3].InnerText.Trim().Split('注', '元');
                var yidengjiang    = new Kaijiangitem
                {
                    Name       = "一等奖",
                    Total      = yidengjiangary[0].Replace(",", string.Empty),
                    TotalMoney = yidengjiangary[1].Replace(",", string.Empty).Replace("\t", "")
                };
                entity.KaiJiangItems.Add(yidengjiang);
                var erdengjiangary = tds[4].InnerText.Trim().Split('注', '元');
                var erdengjiang    = new Kaijiangitem
                {
                    Name       = "二等奖",
                    Total      = erdengjiangary[0].Replace(",", string.Empty),
                    TotalMoney = erdengjiangary[1].Replace(",", string.Empty).Replace("t\\", "")
                };
                entity.KaiJiangItems.Add(erdengjiang);
                var sandengjiangary = tds[5].InnerText.Trim().Split('注', '元');
                var sandengjiang    = new Kaijiangitem
                {
                    Name       = "三等奖",
                    Total      = sandengjiangary[0].Replace(",", string.Empty),
                    TotalMoney = sandengjiangary[1].Replace(",", string.Empty).Replace("\t", "")
                };
                entity.KaiJiangItems.Add(sandengjiang);
                var sidengjiangary = tds[6].InnerText.Trim().Split('注', '元');
                var sidengjiang    = new Kaijiangitem
                {
                    Name       = "四等奖",
                    Total      = sidengjiangary[0].Replace(",", string.Empty),
                    TotalMoney = sidengjiangary[1].Replace(",", string.Empty).Replace("\t", "")
                };
                entity.KaiJiangItems.Add(sidengjiang);
                var wudengjiangary = tds[7].InnerText.Trim().Split('注', '元');
                var wudengjiang    = new Kaijiangitem
                {
                    Name       = "五等奖",
                    Total      = wudengjiangary[0].Replace(",", string.Empty),
                    TotalMoney = wudengjiangary[1].Replace(",", string.Empty).Replace("\t", "")
                };
                entity.KaiJiangItems.Add(wudengjiang);
                model.Spare = entity.TryToJson();
            }
            catch (Exception ex)
            {
                log.Error(GetType(),
                          string.Format("【{0}】通过主站点优化开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ex.Message));
            }

            return(false);
        }
示例#22
0
        /// <summary>
        ///     爬取主网站信息
        /// </summary>
        /// <returns></returns>
        private List <OpenCode7DTModel> GetOpenListFromMainUrl(string mainUrl)
        {
            var result = new List <OpenCode7DTModel>();

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

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

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

                    model.Term      = Convert.ToInt64(term);
                    openCodeString  = tds[1].InnerText.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(13, 2));
                    model.OpenTime  = Convert.ToDateTime(tds[10].InnerText.Trim());
                    //组装开奖详情
                    var details = GetKaijiangDetails(tds);
                    model.Spare     = details;
                    model.DetailUrl = mainUrl;

                    result.Add(model);
                }

                var checkDataHelper = new CheckDataHelper();
                var dbdata          = services.GetListS <OpenCode7DTModel>(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);
        }