private void getOdds3in1() { SeoWebSite.BLL.odds_rq odds_rqbll = new SeoWebSite.BLL.odds_rq(); WebClientBLL webClientBLL = new WebClientBLL(); try { if (Request["scheduleid"] != null && Request["companyid"] != null) { string scheduleid = Request.Form["scheduleid"]; string[] companyid_Array = Request.Form["companyid"].Split(','); DataTable dt = new DataTable(); dt.Columns.Add("scheduleid", typeof(int)); dt.Columns.Add("companyid", typeof(int)); dt.Columns.Add("aaa", typeof(double)); dt.Columns.Add("aab", typeof(double)); dt.Columns.Add("aac", typeof(double)); dt.Columns.Add("aba", typeof(double)); dt.Columns.Add("abb", typeof(double)); dt.Columns.Add("abc", typeof(double)); dt.Columns.Add("baa", typeof(double)); dt.Columns.Add("bab", typeof(double)); dt.Columns.Add("bac", typeof(double)); dt.Columns.Add("bba", typeof(double)); dt.Columns.Add("bbb", typeof(double)); dt.Columns.Add("bbc", typeof(double)); dt.Columns.Add("caa", typeof(double)); dt.Columns.Add("cab", typeof(double)); dt.Columns.Add("cac", typeof(double)); dt.Columns.Add("cba", typeof(double)); dt.Columns.Add("cbb", typeof(double)); dt.Columns.Add("cbc", typeof(double)); dt.Columns.Add("aaa1", typeof(string)); dt.Columns.Add("aab1", typeof(string)); dt.Columns.Add("aac1", typeof(string)); dt.Columns.Add("aba1", typeof(string)); dt.Columns.Add("abb1", typeof(string)); dt.Columns.Add("abc1", typeof(string)); dt.Columns.Add("baa1", typeof(string)); dt.Columns.Add("bab1", typeof(string)); dt.Columns.Add("bac1", typeof(string)); dt.Columns.Add("bba1", typeof(string)); dt.Columns.Add("bbb1", typeof(string)); dt.Columns.Add("bbc1", typeof(string)); foreach (string companyid in companyid_Array) { string[] paramArr = { companyid, scheduleid }; string s = webClientBLL.GetRemoteHtml("odds/detail.aspx?companyID={0}&scheduleid={1}", paramArr); Parser parser = Parser.CreateParser(s, "utf-8"); AndFilter andFilter = new AndFilter(new TagNameFilter("table"), new HasAttributeFilter("bgColor", "#bbbbbb")); NodeList tableList = parser.ExtractAllNodesThatMatch(andFilter); parser = Parser.CreateParser(s, "utf-8"); //NodeList h3tag = parser.ExtractAllNodesThatMatch(new TagNameFilter("h3")); //string year = h3tag[0].ToPlainTextString().Remove(5); if (tableList.Count == 3) { DataRow dr = dt.NewRow(); dr["scheduleid"] = scheduleid; dr["companyid"] = companyid; NodeList tdList; string pankou; #region 让球盘 AndFilter andFilter1 = new AndFilter(new TagNameFilter("tr"), new HasAttributeFilter("class", "ts1")); NodeList list = tableList[0].Children.ExtractAllNodesThatMatch(andFilter1); if (list.Count > 0) { tdList = list[list.Count - 1].Children.SearchFor(typeof(Winista.Text.HtmlParser.Tags.TableColumn));//初盘 pankou = CommonHelper.GoalCnToGoal(tdList[1].ToPlainTextString()); double per1 = 0, per2 = 0, per3 = 0; double per4 = 0, per5 = 0, per6 = 0; if (!string.IsNullOrEmpty(pankou)) { dr["aaa"] = tdList[0].ToPlainTextString(); dr["aab"] = pankou; dr["aac"] = tdList[2].ToPlainTextString(); DataSet ds = odds_rqbll.queryCompanyOddsCount(companyid, tdList[0].ToPlainTextString(), pankou, tdList[2].ToPlainTextString(), Convert.ToInt32(Request.Form["scheduleType"]), "Chupan"); if (Convert.ToDouble(ds.Tables[0].Rows[0][3]) > 0) { per1 = Math.Round(Convert.ToDouble(ds.Tables[0].Rows[0][0]) / Convert.ToDouble(ds.Tables[0].Rows[0][3]) * 100); per2 = Math.Round(Convert.ToDouble(ds.Tables[0].Rows[0][1]) / Convert.ToDouble(ds.Tables[0].Rows[0][3]) * 100); per3 = Math.Round(Convert.ToDouble(ds.Tables[0].Rows[0][2]) / Convert.ToDouble(ds.Tables[0].Rows[0][3]) * 100); dr["aaa1"] = ds.Tables[0].Rows[0][0].ToString() + "(" + Math.Round(Convert.ToDouble(ds.Tables[0].Rows[0][0]) / Convert.ToDouble(ds.Tables[0].Rows[0][3]) * 100) + "%)"; dr["aab1"] = ds.Tables[0].Rows[0][1].ToString() + "(" + Math.Round(Convert.ToDouble(ds.Tables[0].Rows[0][1]) / Convert.ToDouble(ds.Tables[0].Rows[0][3]) * 100) + "%)"; dr["aac1"] = ds.Tables[0].Rows[0][2].ToString() + "(" + Math.Round(Convert.ToDouble(ds.Tables[0].Rows[0][2]) / Convert.ToDouble(ds.Tables[0].Rows[0][3]) * 100) + "%)"; } } tdList = list[0].Children.SearchFor(typeof(Winista.Text.HtmlParser.Tags.TableColumn));//终盘 pankou = CommonHelper.GoalCnToGoal(tdList[1].ToPlainTextString()); if (!string.IsNullOrEmpty(pankou)) { dr["aba"] = tdList[0].ToPlainTextString(); dr["abb"] = pankou; dr["abc"] = tdList[2].ToPlainTextString(); DataSet ds = odds_rqbll.queryCompanyOddsCount(companyid, tdList[0].ToPlainTextString(), pankou, tdList[2].ToPlainTextString(), Convert.ToInt32(Request.Form["scheduleType"]), "Zhongpan"); if (Convert.ToDouble(ds.Tables[0].Rows[0][3]) > 0) { per4 = Math.Round(Convert.ToDouble(ds.Tables[0].Rows[0][0]) / Convert.ToDouble(ds.Tables[0].Rows[0][3]) * 100); per5 = Math.Round(Convert.ToDouble(ds.Tables[0].Rows[0][1]) / Convert.ToDouble(ds.Tables[0].Rows[0][3]) * 100); per6 = Math.Round(Convert.ToDouble(ds.Tables[0].Rows[0][2]) / Convert.ToDouble(ds.Tables[0].Rows[0][3]) * 100); dr["aba1"] = ds.Tables[0].Rows[0][0].ToString() + "(<font color=" + (per4 > per1 ? "red" : "green") + ">" + Math.Round(Convert.ToDouble(ds.Tables[0].Rows[0][0]) / Convert.ToDouble(ds.Tables[0].Rows[0][3]) * 100) + "%</font>)"; dr["abb1"] = ds.Tables[0].Rows[0][1].ToString() + "(<font color=" + (per5 > per2 ? "red" : "green") + ">" + Math.Round(Convert.ToDouble(ds.Tables[0].Rows[0][1]) / Convert.ToDouble(ds.Tables[0].Rows[0][3]) * 100) + "%</font>)"; dr["abc1"] = ds.Tables[0].Rows[0][2].ToString() + "(<font color=" + (per6 > per3 ? "red" : "green") + ">" + Math.Round(Convert.ToDouble(ds.Tables[0].Rows[0][2]) / Convert.ToDouble(ds.Tables[0].Rows[0][3]) * 100) + "%</font>)"; } } } #endregion #region 标准盘 list = tableList[1].Children.ExtractAllNodesThatMatch(andFilter1); if (list.Count > 0) { tdList = list[list.Count - 1].Children.SearchFor(typeof(Winista.Text.HtmlParser.Tags.TableColumn)); dr["baa"] = tdList[0].ToPlainTextString(); dr["bab"] = tdList[1].ToPlainTextString(); dr["bac"] = tdList[2].ToPlainTextString(); tdList = list[0].Children.SearchFor(typeof(Winista.Text.HtmlParser.Tags.TableColumn));//终盘 dr["bba"] = tdList[0].ToPlainTextString(); dr["bbb"] = tdList[1].ToPlainTextString(); dr["bbc"] = tdList[2].ToPlainTextString(); } #endregion #region 大小盘 list = tableList[2].Children.ExtractAllNodesThatMatch(andFilter1); if (list.Count > 0) { tdList = list[list.Count - 1].Children.SearchFor(typeof(Winista.Text.HtmlParser.Tags.TableColumn)); pankou = CommonHelper.BallSizeToBall(tdList[1].ToPlainTextString()); if (!string.IsNullOrEmpty(pankou)) { dr["caa"] = tdList[0].ToPlainTextString(); dr["cab"] = pankou; dr["cac"] = tdList[2].ToPlainTextString(); } tdList = list[0].Children.SearchFor(typeof(Winista.Text.HtmlParser.Tags.TableColumn)); pankou = CommonHelper.BallSizeToBall(tdList[1].ToPlainTextString()); if (!string.IsNullOrEmpty(pankou)) { dr["cba"] = tdList[0].ToPlainTextString(); dr["cbb"] = pankou; dr["cbc"] = tdList[2].ToPlainTextString(); } } #endregion dt.Rows.Add(dr); } } if (dt.Rows.Count > 0) { DataRow dr1 = dt.NewRow(); #region 亚洲盘统计 List <double> pankouList1 = new List <double>(); List <double> homefcList1 = new List <double>(); List <double> awayfcList1 = new List <double>(); List <double> pankouList2 = new List <double>(); List <double> homefcList2 = new List <double>(); List <double> awayfcList2 = new List <double>(); foreach (DataRow dr in dt.Rows) { if (dr["aab"] != DBNull.Value && !pankouList1.Contains(Convert.ToDouble(dr["aab"]))) { pankouList1.Add(Convert.ToDouble(dr["aab"])); } if (dr["abb"] != DBNull.Value && !pankouList2.Contains(Convert.ToDouble(dr["abb"]))) { pankouList2.Add(Convert.ToDouble(dr["abb"])); } } foreach (decimal item in pankouList2) { if (dt.Select("aab=" + item).Count() > 1) { double fc = Convert.ToDouble(dt.Compute("Var(aaa)", "aab=" + item)); homefcList1.Add(fc); fc = Convert.ToDouble(dt.Compute("Var(aac)", "aab=" + item)); awayfcList1.Add(fc); } if (dt.Select("abb=" + item).Count() > 1) { double fc = Convert.ToDouble(dt.Compute("Var(aba)", "abb=" + item)); homefcList2.Add(fc); fc = Convert.ToDouble(dt.Compute("Var(abc)", "abb=" + item)); awayfcList2.Add(fc); } } dr1["aaa"] = Convert.ToDouble(dt.Compute("Avg(aaa)", "1=1")); dr1["aac"] = Convert.ToDouble(dt.Compute("Avg(aac)", "1=1")); dr1["aaa1"] = homefcList1.Average(); dr1["aac1"] = awayfcList1.Average(); dr1["aba"] = Convert.ToDouble(dt.Compute("Avg(aba)", "1=1")); dr1["abc"] = Convert.ToDouble(dt.Compute("Avg(abc)", "1=1")); dr1["aba1"] = "<font color=" + (homefcList2.Average() > homefcList1.Average() ? "red" : "green") + ">" + homefcList2.Average() + "</font>"; dr1["abc1"] = "<font color=" + (awayfcList2.Average() > awayfcList1.Average() ? "red" : "green") + ">" + awayfcList2.Average() + "</font>"; #endregion dr1["baa"] = Convert.ToDouble(dt.Compute("Avg(baa)", "1=1")); dr1["bab"] = Convert.ToDouble(dt.Compute("Avg(bab)", "1=1")); dr1["bac"] = Convert.ToDouble(dt.Compute("Avg(bac)", "1=1")); dr1["bba"] = Convert.ToDouble(dt.Compute("Avg(bba)", "1=1")); dr1["bbb"] = Convert.ToDouble(dt.Compute("Avg(bbb)", "1=1")); dr1["bbc"] = Convert.ToDouble(dt.Compute("Avg(bbc)", "1=1")); dr1["baa1"] = Convert.ToDouble(dt.Compute("Var(baa)", "1=1")); dr1["bab1"] = Convert.ToDouble(dt.Compute("Var(bab)", "1=1")); dr1["bac1"] = Convert.ToDouble(dt.Compute("Var(bac)", "1=1")); dr1["bba1"] = "<font color=" + (Convert.ToDouble(dt.Compute("Var(bba)", "1=1")) > Convert.ToDouble(dr1["baa1"]) ? "red" : "green") + ">" + Convert.ToDouble(dt.Compute("Var(bba)", "1=1")) + "</font>"; dr1["bbb1"] = "<font color=" + (Convert.ToDouble(dt.Compute("Var(bbb)", "1=1")) > Convert.ToDouble(dr1["bab1"]) ? "red" : "green") + ">" + Convert.ToDouble(dt.Compute("Var(bbb)", "1=1")) + "</font>"; dr1["bbc1"] = "<font color=" + (Convert.ToDouble(dt.Compute("Var(bbc)", "1=1")) > Convert.ToDouble(dr1["bac1"]) ? "red" : "green") + ">" + Convert.ToDouble(dt.Compute("Var(bbc)", "1=1")) + "</font>"; dt.Rows.Add(dr1); } JObject result = new JObject(); result.Add(new JProperty("success", true)); result.Add(new JProperty("totlalCount", dt.Rows.Count)); result.Add(new JProperty("data", JArray.FromObject(dt))); JsonStr = result.ToString(); } else { JsonStr = "{success:false,message:'请求数据异常!'}"; } } catch (Exception e) { JsonStr = "{success:false,message:'" + e.Message + "'}"; } }
private void ProcessCompare() { JObject jo = new JObject(); try { DataTable dt = new DataTable(); dt.Columns.Add("t", typeof(int)); dt.Columns.Add("o1", typeof(double)); dt.Columns.Add("o2", typeof(double)); dt.Columns.Add("o3", typeof(double)); HtmlWeb web = new HtmlWeb(); HtmlDocument doc = web.Load("http://live1.nowscore.com/odds/match.aspx?id=" + Request["id"]); HtmlNodeCollection zdnodes = doc.DocumentNode.SelectNodes("//span[@id='odds']//span[text()='走地']/../.."); foreach (HtmlNode zdnode in zdnodes) { for (int i = 1; i <= 3; i++) { DataRow dr = dt.NewRow(); dr["t"] = i; if (string.IsNullOrEmpty(zdnode.SelectSingleNode("td[" + (i * 6 - 1) + "]").InnerText.Trim())) { continue; } dr["o1"] = zdnode.SelectSingleNode("td[" + (i * 6 - 1) + "]").InnerText; dr["o3"] = zdnode.SelectSingleNode("td[" + (i * 6 + 1) + "]").InnerText; string o2text = zdnode.SelectSingleNode("td[" + (i * 6) + "]").InnerText; if (i == 1) { dr["o2"] = CommonHelper.GoalCnToGoal(o2text); } else if (i == 2) { dr["o2"] = o2text; } else if (i == 3) { dr["o2"] = CommonHelper.BallSizeToBall(o2text); } dt.Rows.Add(dr); } } doc = web.Load("https://mobile.bet365.com/premium/V6/sport/coupon/coupon.aspx?zone=0&isocode=HK&tzi=1&key=" + Request["key"] + "&ip=1&gn=0&lng=2&ct=198&cts=43&clt=9996&ot=2"); DataTable bdt = dt.Clone(); zdnodes = doc.DocumentNode.SelectNodes("//section[position()<3] | //h1[starts-with(text(),'全場賽果')]/../../../.."); foreach (HtmlNode zdnode in zdnodes) { try { DataRow dr = bdt.NewRow(); HtmlNodeCollection oddsNodes = zdnode.SelectNodes("div//td[@class='cols2'] | div//td[@class='cols3']"); if (oddsNodes.Count == 2) { dr["t"] = zdnodes.IndexOf(zdnode) == 0 ? 1 : 3; string pankou = oddsNodes[0].SelectSingleNode("div/text()").InnerText; List <double> pkList = new List <double>(); foreach (string item in pankou.Split(',')) { pkList.Add(Convert.ToDouble(item.Replace("超過", ""))); } dr["o2"] = Convert.ToInt32(dr["t"]) == 1 ? (0 - pkList.Average()) : pkList.Average(); dr["o1"] = Convert.ToDouble(oddsNodes[0].SelectSingleNode("div/span").InnerText) - 1; dr["o3"] = Convert.ToDouble(oddsNodes[oddsNodes.Count - 1].SelectSingleNode("div/span").InnerText) - 1; } else { dr["t"] = 2; dr["o2"] = oddsNodes[1].SelectSingleNode("div/span").InnerText; dr["o1"] = Convert.ToDouble(oddsNodes[0].SelectSingleNode("div/span").InnerText); dr["o3"] = Convert.ToDouble(oddsNodes[oddsNodes.Count - 1].SelectSingleNode("div/span").InnerText); } bdt.Rows.Add(dr); } catch (Exception) { continue; } } string s = ""; if (Convert.ToInt32(bdt.Compute("count(t)", "t=1")) > 0) { DataRow dr = bdt.Select("t=1")[0]; int count = Convert.ToInt32(dt.Compute("count(t)", string.Format("t=1 and o2={0}", new object[] { dr["o2"] }))); if (count > 0) { if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=1 and o1<={0} and o2={1}", new object[] { dr["o1"], dr["o2"] }))) == 0) { s += "亚盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看好赢盘信心" + count + "<br>"; } if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=1 and o1>={0} and o2={1}", new object[] { dr["o1"], dr["o2"] }))) == 0) { s += "亚盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看衰赢盘信心" + count + "<br>"; } if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=1 and o3<={0} and o2={1}", new object[] { dr["o3"], dr["o2"] }))) == 0) { s += "亚盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看好输盘信心" + count + "<br>"; } if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=1 and o3>={0} and o2={1}", new object[] { dr["o3"], dr["o2"] }))) == 0) { s += "亚盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看衰输盘信心" + count + "<br>"; } } } if (Convert.ToInt32(bdt.Compute("count(t)", "t=2")) > 0) { DataRow dr = bdt.Select("t=2")[0]; if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=2 and o1<={0}", new object[] { dr["o1"] }))) == 0) { s += "欧盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看好胜<br>"; } if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=2 and o1>={0}", new object[] { dr["o1"] }))) == 0) { s += "欧盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看衰胜<br>"; } if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=2 and o2<={0}", new object[] { dr["o2"] }))) == 0) { s += "欧盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看好平<br>"; } if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=2 and o2>={0}", new object[] { dr["o2"] }))) == 0) { s += "欧盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看衰平<br>"; } if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=2 and o3<={0}", new object[] { dr["o3"] }))) == 0) { s += "欧盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看好负<br>"; } if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=2 and o3>={0}", new object[] { dr["o3"] }))) == 0) { s += "欧盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看衰负<br>"; } } if (Convert.ToInt32(bdt.Compute("count(t)", "t=3")) > 0) { DataRow dr = bdt.Select("t=3")[0]; int count = Convert.ToInt32(dt.Compute("count(t)", string.Format("t=3 and o2={0}", new object[] { dr["o2"] }))); if (count > 0) { if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=3 and o1<={0} and o2={1}", new object[] { dr["o1"], dr["o2"] }))) == 0) { s += "大小盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看好大球信心" + count + "<br>"; } if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=3 and o1>={0} and o2={1}", new object[] { dr["o1"], dr["o2"] }))) == 0) { s += "大小盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看衰大球信心" + count + "<br>"; } if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=3 and o3<={0} and o2={1}", new object[] { dr["o3"], dr["o2"] }))) == 0) { s += "大小盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看好小球信心" + count + "<br>"; } if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=3 and o3>={0} and o2={1}", new object[] { dr["o3"], dr["o2"] }))) == 0) { s += "大小盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看衰小球信心" + count + "<br>"; } } } if (Convert.ToInt32(bdt.Compute("count(t)", "t=1")) > 0) { DataRow dr = bdt.Select("t=1")[0]; int count = Convert.ToInt32(dt.Compute("count(t)", string.Format("t=1 and o2={0}", new object[] { dr["o2"] }))); if (count > 0) { s += "--------逆向亚盘---------<br>"; if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=1 and o1<={0} and o2={1}", new object[] { dr["o3"], dr["o2"] }))) == 0) { s += "亚盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看好赢盘信心" + count + "<br>"; } if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=1 and o1>={0} and o2={1}", new object[] { dr["o3"], dr["o2"] }))) == 0) { s += "亚盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看衰赢盘信心" + count + "<br>"; } if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=1 and o3<={0} and o2={1}", new object[] { dr["o1"], dr["o2"] }))) == 0) { s += "亚盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看好输盘信心" + count + "<br>"; } if (Convert.ToInt32(dt.Compute("count(t)", string.Format("t=1 and o3>={0} and o2={1}", new object[] { dr["o1"], dr["o2"] }))) == 0) { s += "亚盘" + dr["o1"] + " " + dr["o2"] + " " + dr["o3"] + "看衰输盘信心" + count + "<br>"; } } } jo.Add("success", true); jo.Add("message", s); } catch (Exception e) { jo.Add("success", false); jo.Add("message", e.Message); } finally { json = jo.ToString(); } }