using System; using System.Collections.Generic; using System.Configuration; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using FCS.Common; using FCS.Interface; using FCS.Models; using HtmlAgilityPack; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Quartz; namespace FCS.Crawler.ZCLotteryGames { class OddsJob : CommonJob, IJob,IDisposable { public OddsJob() { logName = "OddsJob"; log = new LogHelper(); services = IOC.Resolve(); } public void Execute(IJobExecutionContext context) { //Config = CommonHelper.GetConfigFromDataMap(context.JobDetail.JobDataMap); // Click(); } private List listCuringint = new List(); private List listDetailint = new List(); private List listAnalysisint = new List(); private List listGameId = new List(); private List listDetailId = new List(); public void Click(List Gamelistq) { try { string Season = DateTime.Now.ToString("yyyy"); //Gamelistq = glist; teamlist = services.Query().ToList(); int number = Gamelistq.Count; int page = number % 1000 == 0 ? number / 1000 : number / 1000 + 1; //要删除的 //插入之前 获取要删除的旧数据的所有PK for (int i = 0; i < Gamelistq.Count; i++) { listGameId.Add(Gamelistq[i].Id); } if (Gamelistq.Count > 0) { var query1 = new List(); foreach (var item in Gamelistq) { try { query1.AddRange(services.Query(" and (GameId = ('" + item.Id + "')) ").Where(a=>a.ChangeDateTime> Convert.ToDateTime(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"))).ToList()); } catch (Exception) { } try { query1.AddRange(services.Query(" and (GameId = ('" + item.Id + "') and CompensateType =('a1bfa33cd96ae811ab3100ac6a4a134f') )").ToList()); } catch (Exception) { } try { query1.AddRange(services.Query(" and (GameId = ('" + item.Id + "') and CompensateType =('21f77e31d96ae811ab3100ac6a4a134f') )").ToList()); } catch (Exception) { } try { query1.AddRange(services.Query(" and (GameId = ('" + item.Id + "') and CompensateType =('20f77e31d96ae811ab3100ac6a4a134f') )").ToList()); } catch (Exception) { } } listDetailId = query1; for (int i = 0; i < query1.Count; i++) { listDetailint.Add(query1[i].PK); } var query2 = services.Query(" and GameId in ('" + string.Join("','", listGameId) + "')") == null ? new List() : services.Query(" and GameId in ('" + string.Join("','", listGameId) + "')").ToList(); for (int i = 0; i < query2.Count; i++) { listCuringint.Add(query2[i].PK); } var query3 = services.Query(" and GameId in ('" + string.Join("','", listGameId) + "') and CuringType='0046feff428ee811af5a2c4d54d3f5a9'") == null ? new List() : services.Query(" and GameId in ('" + string.Join("','", listGameId) + "') and CuringType='0046feff428ee811af5a2c4d54d3f5a9'").ToList(); for (int i = 0; i < query3.Count; i++) { listAnalysisint.Add(query3[i].PK); } } for (int j = 0; j < page; j++) { Trace.WriteLine("第几个J 开始 OddsJob :" + (j + 1)); threadCount = Gamelistq.Count; finishcount = 0; Gamelistq.ForEach(async p => { await Task.Run(() => { Getbjop_new(p.Remark, p); }); lock (locker) { finishcount++; Monitor.Pulse(locker); //完成,通知等待队列,告知已完,执行下一个。 } }); lock (locker) { while (finishcount != threadCount) { Thread.Sleep(5000); Monitor.Wait(locker);//等待 } } Companylist = Companylist.Distinct().ToList(); InsertBankerCompany(Companylist); InsertBankerCompany1(); { List teamSeasonAnalysislist = new List(); try { teamSeasonAnalysislist = services.Query().ToList(); } catch (Exception e) { } salist = salist.Distinct().ToList(); salist = salist.Where((x, i) => salist.FindIndex(z => z.TeamId == x.TeamId) == i).ToList();//Lambda表达式去重 List salist2 = new List(); foreach (var item in salist) { if (teamSeasonAnalysislist.Where(a => a.TeamId == item.TeamId).ToList().Count == 0) salist2.Add(item); } Trace.WriteLine("插入赛季分析数据 开始:" + salist2.Count); if (salist2.Count != 0) services.SqlBulkCopyAdd(salist2); } List listbk = new List(); try { listbk = services.Query().ToList(); } catch (Exception e) { } Thread.Sleep(5000); oclist = oclist.Where(a => a != null).ToList(); foreach (var item in oclist) { F_OddsCuring oc_new = new F_OddsCuring(); oc_new = item; lock (listbk) { var listbkdetail = listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault(); oc_new.BankerCompanyId = listbkdetail == null ? "" : listbkdetail.Id; } lock (oclist_new) { oclist_new.Add(oc_new); } } csalist = csalist.Where(a => a != null).ToList(); foreach (var item in csalist) { if (item != null) { F_Compensate cp = new F_Compensate(); cp = item; lock (listbk) { var listbkdetail = listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault(); cp.BankerCompanyId = listbkdetail == null ? "" : listbkdetail.Id; } lock (oclist_new) { csalist_new.Add(cp); } } } } { Trace.WriteLine("插入欧赔固化数据 开始:" + oclist_new.Count); if (oclist_new.Count != 0) services.SqlBulkCopyAdd(oclist_new); Trace.WriteLine("插入固化分析数据 开始:" + calist.Count); if (calist.Count != 0) services.SqlBulkCopyAdd(calist); var list_com = new List(); foreach (var item in Gamelistq) { var count = listDetailId.Where(a => a.GameId == item.Id).ToList().Count; var count_new = csalist_new.Where(a => a.GameId == item.Id).ToList().Count; if (count_new == 0 && count == 0) continue; if (count < count_new) { list_com.AddRange(csalist_new.Where(a => a.GameId == item.Id).ToList()); } else { List intlist = new List(); foreach (var item3 in listDetailId.Where(a => a.GameId == item.Id).ToList()) { var items = item3; items.PK = 0; intlist.Add(items); } list_com.AddRange(intlist); } } Trace.WriteLine("插入欧赔详情数据 开始:" + list_com.Count); if (list_com.Count != 0) { int page1 = list_com.Count % 1000 == 0 ? list_com.Count / 1000 : list_com.Count / 1000 + 1; for (int i = 0; i < page1; i++) { var querylist = list_com.Skip(i * 1000).Take(1000).ToList(); Trace.WriteLine("插入欧赔详情数据 开始:" + querylist.Count); services.SqlBulkCopyAdd(querylist); } } urllist = new List(); urllist1 = new List(); Companylist = new List();//所有公司 bclist = new List(); bcrlist = new List(); calist = new List(); salist = new List(); oclist = new List(); oclist_new = new List(); csalist = new List(); csalist_new = new List(); } Trace.WriteLine("删除数据 F_CuringAnalysis 开始:" + listAnalysisint.Count); if (listAnalysisint.Count > 0) services.Delete(" and PK in (" + string.Join(",", listAnalysisint) + ")"); Trace.WriteLine("删除数据 F_CuringAnalysis 结束:" + listAnalysisint.Count); listAnalysisint = new List(); Trace.WriteLine("删除数据 F_Compensate 开始:" + listDetailint.Count); if (listDetailint.Count > 0) { if (listDetailint.Count > 1000) { int pages = listDetailint.Count % 1000 == 0 ? listDetailint.Count / 1000 : listDetailint.Count / 1000 + 1; for (int i = 0; i < pages; i++) { var listDetailint1 = listDetailint.Skip(i * 1000).Take(1000).ToList(); services.Delete(" and PK in (" + string.Join(",", listDetailint1) + ")"); Trace.WriteLine("删除数据 F_OddsCuring 结束中:" + listDetailint1.Count); } } else { services.Delete(" and PK in (" + string.Join(",", listDetailint) + ")"); } } Trace.WriteLine("删除数据 F_Compensate 结束:" + listDetailint.Count); listDetailint = new List(); Trace.WriteLine("删除数据 F_OddsCuring 开始:" + listCuringint.Count); if (listCuringint.Count > 0) { if (listCuringint.Count > 1000) { int pages = listCuringint.Count % 1000 == 0 ? listCuringint.Count / 1000 : listCuringint.Count / 1000 + 1; for (int i = 0; i < pages; i++) { var listCuringint1 = listCuringint.Skip(i * 1000).Take(1000).ToList(); services.Delete(" and PK in (" + string.Join(",", listCuringint1) + ")"); Trace.WriteLine("删除数据 F_OddsCuring 结束中:" + listCuringint1.Count); } } else { services.Delete(" and PK in (" + string.Join(",", listCuringint) + ")"); } } Trace.WriteLine("删除数据 F_OddsCuring 结束:" + listCuringint.Count); listCuringint = new List(); Gamelistq = new List(); teamlist = new List(); } catch (Exception e) { CommonHelper.LogBD(e.Message, logName); CommonHelper.LogBD(e.Source, logName); CommonHelper.LogBD(e.StackTrace, logName); Thread.Sleep(1000*60*5); urllist = new List(); urllist1 = new List(); Companylist = new List();//所有公司 bclist = new List(); bcrlist = new List(); calist = new List(); salist = new List(); oclist = new List(); oclist_new = new List(); csalist = new List(); csalist_new = new List(); Click(Gamelistq); } } public void DoMainUrl() { List Gamelistq = new List(); teamlist = services.Query().ToList(); Gamelistq = services.Query().ToList(); int number = Gamelistq.Count; int page = number % 100 == 0 ? number / 100 : number / 100 + 1; ThreadPool.SetMinThreads(1, 1); ThreadPool.SetMaxThreads(400, 400); if (ConfigurationManager.AppSettings["end"].TryToInt32() != -1) { if (ConfigurationManager.AppSettings["end"].TryToInt32() > page) { return; } page = ConfigurationManager.AppSettings["end"].TryToInt32();//1520 } for (int j = ConfigurationManager.AppSettings["j"].TryToInt32(); j < page; j++)//从j=43开始,只爬取2017,2017-2018,2018,2018-2019的赛季数据 { Trace.WriteLine("第几个J 开始:" + (j+1)); Gamelistq = Gamelistq.Skip(j * 100).Take(100).ToList(); Gamelistq = Gamelistq.Where(a => a.Season == "2018" || a.Season == "2018-2019").ToList(); Gamelistq.ForEach(p => { Task.Run(() => { Trace.WriteLine("欧赔分析 开始:" + Gamelistq.IndexOf(p)); Getbjop(p.Remark, p); }); }); while (true) { if (CommonHelper.ThreadsFinsh()) break; } Companylist = Companylist.Distinct().ToList(); InsertBankerCompany(Companylist); InsertBankerCompany1(); { List teamlist = new List(); try { teamlist = services.Query().ToList(); } catch (Exception e) { } salist = salist.Distinct().ToList(); List salist1 = salist.Where((x, i) => salist.FindIndex(z => z.TeamId == x.TeamId) == i).ToList();//Lambda表达式去重 List salist2 = new List(); foreach (var item in salist1) { if(teamlist.Where(a=>a.TeamId==item.TeamId).ToList().Count==0) salist2.Add(item); } Trace.WriteLine("插入赛季分析数据 开始:" + salist2.Count); if(salist2.Count!=0) services.SqlBulkCopyAdd(salist2); } List listbk = new List(); try { listbk = services.Query().ToList(); } catch (Exception e) { Trace.WriteLine("插入赛季分析数据 开始:" + e.Message); // throw; } oclist.ForEach(p => { Task.Run(() => { if (p != null) { lock (oclist) { Trace.WriteLine("更换公司Id:" + oclist.IndexOf(p)); F_OddsCuring oc_new = new F_OddsCuring(); oc_new = p; oc_new.BankerCompanyId = listbk.Where(a => a.Name == p.BankerCompanyId).FirstOrDefault().Id; // Getbjop(p.Remark, p); oclist_new.Add(oc_new); } } }); }); while (true) { if (CommonHelper.ThreadsFinsh()) break; } csalist.ForEach(p => { Task.Run(() => { if (p != null) { lock (csalist) { Trace.WriteLine("更换公司Id:" + csalist.IndexOf(p)); F_Compensate cp = new F_Compensate(); cp = p; cp.BankerCompanyId = listbk.Where(a => a.Name == p.BankerCompanyId).FirstOrDefault().Id; // Getbjop(p.Remark, p); csalist_new.Add(cp); } } }); }); while (true) { if (CommonHelper.ThreadsFinsh()) break; } List calist1 = calist.Where((x, i) => calist.FindIndex(z => z.GameId == x.GameId && z.CuringAnalysisType == x.CuringAnalysisType) == i).ToList();//Lambda表达式去重 Trace.WriteLine("插入欧赔固化数据 开始:" + oclist_new.Count); if (oclist_new.Count!=0) services.SqlBulkCopyAdd(oclist_new); Trace.WriteLine("插入欧赔详情数据 开始:" + csalist_new.Count); if (csalist_new.Count!=0) services.SqlBulkCopyAdd(csalist_new); Trace.WriteLine("插入固化分析数据 开始:" + calist1.Count); if (calist1.Count!=0) services.SqlBulkCopyAdd(calist1); urllist = new List(); urllist1 = new List(); Companylist = new List();//所有公司 bclist = new List(); bcrlist = new List(); calist = new List(); salist = new List(); oclist = new List(); oclist_new = new List(); csalist = new List(); csalist_new = new List(); } } public List urllist = new List(); public List urllist1 = new List(); public List Companylist = new List();//所有公司 public List bclist = new List(); public List bcrlist = new List(); public static List calist = new List(); public List teamlist = new List(); public static List salist = new List(); public static List oclist = new List(); public List oclist_new = new List(); public static List csalist = new List(); public List csalist_new = new List(); public void Getbjop(string url,F_Games game) { try { url = url.Replace(":80", "").Replace("ypdb", "bjop"); //class="bf-tab-02" //Trace.WriteLine("欧赔分析 开始:" + url); string yurl = url; var htmlResource = CommonHelper.GetHtmlString(url, "足彩"); HtmlDocument doc = new HtmlDocument(); if (htmlResource == null) return; doc.LoadHtml(htmlResource); //赔率集合 HtmlNodeCollection bjopHtml = doc.DocumentNode.SelectNodes("//*[@class='bf-tab-02']/tr"); if (bjopHtml ==null) return; HtmlNodeCollection homenameHtml = doc.DocumentNode.SelectNodes("//*[@class='host-name']/a"); var q1 = teamlist.Where(a => a.Name == homenameHtml[0].InnerText.Trim()).FirstOrDefault(); string HomeTeamName = ""; string data = ""; if (q1 != null) { HomeTeamName = q1.Name; HtmlNodeCollection homepmHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-zd']"); if (homepmHtml[0].InnerText.Trim().Contains("上赛季排名")) { data = "" + string.Join("|", homepmHtml[0].InnerText.Trim().Replace("上赛季排名:", "").Replace("本赛季排名", "").Split(':')); HtmlNodeCollection homedfHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-h']"); data += "|" + homedfHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", ""); } else { data = "" + homepmHtml[0].InnerText.Trim().Replace("FIFA排名:", ""); HtmlNodeCollection homedfHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-h']"); data += "|" + homedfHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "").Replace("积分", ""); } InsertSeasonAnalysis(data, q1.Id, url, game.Season); } HtmlNodeCollection visitingnameHtml = doc.DocumentNode.SelectNodes("//*[@class='visit-name']/a"); var q2 = teamlist.Where(a => a.Name == visitingnameHtml[0].InnerText.Trim()).FirstOrDefault(); string VisitingTeamName = ""; if (q2 != null) { VisitingTeamName = q2.Name; HtmlNodeCollection homepmkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-kd']"); if (homepmkHtml[0].InnerText.Trim().Contains("上赛季排名")) { data = "" + string.Join("|", homepmkHtml[0].InnerText.Trim().Replace("上赛季排名:", "").Replace("本赛季排名", "").Split(':')); HtmlNodeCollection homedfkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-v']"); data += "|" + homedfkHtml[0].InnerText.Trim().Replace("客队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", ""); } else { data = "" + homepmkHtml[0].InnerText.Trim().Replace("FIFA排名:", ""); HtmlNodeCollection homedfkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-v']"); data += "|" + homedfkHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "").Replace("积分", ""); } InsertSeasonAnalysis(data, q2.Id, url, game.Season); } List listdetail = new List(); foreach (var item in bjopHtml) { HtmlDocument doc1 = new HtmlDocument(); doc1.LoadHtml(item.InnerHtml); HtmlNodeCollection bjoptdHtml = doc1.DocumentNode.SelectNodes("//td"); int i = 1; string shuju = "", nurl = ""; foreach (var item1 in bjoptdHtml) { if (i == 2) { // shuju += item1.InnerText.Trim()+"|"; Companylist.Add(item1.InnerText.Trim() + "|" + item1.Attributes["data"].Value); // Companylist = Companylist.Distinct().ToList(); // InsertBankerCompany(); } if (i == 6) { shuju += item1.InnerText.Trim() + "|"; nurl = item1.SelectNodes("//a")[0].Attributes["href"].Value.Trim(); } else if (i == 9) { HtmlDocument doc2 = new HtmlDocument(); doc2.LoadHtml(item1.InnerHtml); HtmlNodeCollection timehtml = doc2.DocumentNode.SelectNodes("//em"); shuju += item.Attributes["firsttime"].Value + "|"; } else { shuju += item1.InnerText.Trim() + "|"; } i++; } listdetail.Add(shuju + "@" + nurl); //InsertOddsCuring(shuju, game.Id, nurl, game.StartDateTime.TryToDateTime(), game.HomeTeamId, game.VisitingTeamId, HomeTeamName, VisitingTeamName); } listdetail.ForEach(p => { Task.Run(() => { try { var lis = p.Split('@')[0]; // Trace.WriteLine("欧赔分析多线程 开始:" + listdetail.IndexOf(p)); InsertOddsCuring(p.Split('@')[0], game.Id, p.Split('@')[1], game.StartDateTime.TryToDateTime(), game.HomeTeamId, game.VisitingTeamId, HomeTeamName, VisitingTeamName); } catch (Exception e) { Trace.WriteLine("欧赔分析多线程 报错:" + listdetail.IndexOf(p)); } }); }); //class="bf-tab-03" HtmlNodeCollection bjopfxHtml = doc.DocumentNode.SelectNodes("//*[@class='bf-tab-03']/tr"); foreach (var item in bjopfxHtml) { HtmlDocument doc1 = new HtmlDocument(); doc1.LoadHtml(item.InnerHtml); HtmlNodeCollection bjopfxtdHtml = doc1.DocumentNode.SelectNodes("//td"); if (bjopfxtdHtml.Count == 17) { string shuju = ""; foreach (var item1 in bjopfxtdHtml) { shuju += item1.InnerText.Trim() + "|"; } InsertCuringAnalysis(shuju, game.Id, url); } } } catch (Exception e) { Trace.WriteLine("报错开始 开始:" + "http://fenxi.zgzcw.com" + url); // Getbjop(url, game); } } public void Getbjopdetail(string url, F_OddsCuring oc) { try { //Trace.WriteLine("欧赔所有分析获取 开始:" + "http://fenxi.zgzcw.com" + url); string yurl = url; if(!url.Contains("http://fenxi.zgzcw.com")) url = "http://fenxi.zgzcw.com" + url.Replace(":80", ""); var htmlResource = CommonHelper.GetHtmlString(url, "足彩"); HtmlDocument doc = new HtmlDocument(); if (htmlResource == null) return; doc.LoadHtml(htmlResource); HtmlNodeCollection detailHtml = doc.DocumentNode.SelectNodes("//*[@class='dxzkt-tab']/tr"); if (detailHtml == null) return; int i = 0; foreach (var item in detailHtml) { if (i > 10) return; HtmlDocument doc1 = new HtmlDocument(); doc1.LoadHtml(item.InnerHtml); HtmlNodeCollection bjopfxtdHtml = doc1.DocumentNode.SelectNodes("//td"); if (bjopfxtdHtml != null) { if (bjopfxtdHtml.Count == 11) { string shuju = ""; foreach (var item1 in bjopfxtdHtml) { shuju += item1.InnerText.Trim() + "|"; } InsertCompensate(shuju, oc, url); } } i++; } } catch (Exception e) { Trace.WriteLine("报错开始 开始:" + "http://fenxi.zgzcw.com" + url); //Getbjopdetail(url, oc); } } /// /// 插入数据公司 /// /// /// /// public void InsertBankerCompany(List Companylist) { List listbk = new List(); try { listbk = services.Query().ToList(); } catch (Exception e) { } foreach (var item in Companylist) { if (item.IsEmpty()) continue; var query = item.Split('|'); if (listbk.Where(a => a.Name == query[0]).ToList().Count > 0) continue; BankerCompany bc = new BankerCompany(); bc.CreateDateTime = DateTime.Now; bc.Id = CommonHelper.GetGuid().ToString(); bc.Name = query[0]; bclist.Add(bc); } List bclist1 = bclist.Where((x, i) => bclist.FindIndex(z => z.Name == x.Name) == i).ToList();//Lambda表达式去重 Trace.WriteLine("插入公司数据 开始:" + bclist1.Count); if(bclist1.Count!=0) services.SqlBulkCopyAdd(bclist1); } public void InsertBankerCompany1() { List listbk = new List(); List listbkrs = new List(); try { listbk = services.Query().ToList(); listbkrs = services.Query().ToList(); } catch (Exception e) { } foreach (var item in Companylist) { if (item.IsEmpty()) continue; var query = item.Split('|'); // bclist1 if (listbk.Where(a => a.Name == query[0]).ToList().Count > 0) { var query2 = query[1].Split(','); foreach (var item1 in query2) { //if (!item1.Trim().IsEmpty()) { BankerCompanyRelation bcr = new BankerCompanyRelation(); bcr.BankerCompanyId = listbk.Where(a => a.Name == query[0]).FirstOrDefault().Id; if (item1 == "0") bcr.BankerCompanyType = a2; if (item1 == "1") bcr.BankerCompanyType = a3; if (item1 == "2") bcr.BankerCompanyType = a4; if (item1 == "5") bcr.BankerCompanyType = a5; if (item1 == "") bcr.BankerCompanyType = a1; if (item1 == "X") bcr.BankerCompanyType = a1; bcr.Remark = ""; bcr.Id = CommonHelper.GetGuid().ToString(); bcr.CreateDateTime = DateTime.Now; if (listbkrs.Where(a => a.BankerCompanyType == bcr.BankerCompanyType && a.BankerCompanyId == bcr.BankerCompanyId).ToList().Count == 0) { bcrlist.Add(bcr); } } } } } Trace.WriteLine("插入公司分类数据 开始:" + bcrlist.Count); if (bcrlist.Count!=0) services.SqlBulkCopyAdd(bcrlist); } public static string a1 = "c06f47ca4f8ee811af5a2c4d54d3f5a9", a2= "00ae03d14f8ee811af5a2c4d54d3f5a9", a3= "30d122dc4f8ee811af5a2c4d54d3f5a9", a4= "f08de6e64f8ee811af5a2c4d54d3f5a9", a5= "904f40ef4f8ee811af5a2c4d54d3f5a9"; //百家欧赔 c06f47ca4f8ee811af5a2c4d54d3f5a9 //主流公司 00ae03d14f8ee811af5a2c4d54d3f5a9 0 //交易公司 30d122dc4f8ee811af5a2c4d54d3f5a9 1 //亚洲公司 f08de6e64f8ee811af5a2c4d54d3f5a9 2 //普通公司 904f40ef4f8ee811af5a2c4d54d3f5a9 5 /// /// 插入数据欧赔数据 /// /// /// /// public void InsertCompensate(string data, F_OddsCuring oc, string url) { try { var query = data.Replace("↓", "").Replace("↑", "").Split('|'); F_Compensate ca = new F_Compensate(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = Convert.ToDateTime(query[1]); ca.CompensateType = "a0bfa33cd96ae811ab3100ac6a4a134f";//即时赔率 a0bfa33cd96ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(query[3]); ca.POdd = Convert.ToDouble(query[4]); ca.FOdd = Convert.ToDouble(query[5]); ca.Remark = url; ca.Id = CommonHelper.GetGuid().ToString(); ca.GameId = oc.GameId; csalist.Add(ca); ca = new F_Compensate(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = Convert.ToDateTime(query[1]); ca.CompensateType = "20f77e31d96ae811ab3100ac6a4a134f";//概率 20f77e31d96ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(query[6]); ca.POdd = -1; ca.FOdd = Convert.ToDouble(query[7]); ca.Remark = url; ca.Id = CommonHelper.GetGuid().ToString(); ca.GameId = oc.GameId; csalist.Add(ca); ca = new F_Compensate(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = Convert.ToDateTime(query[1]); ca.CompensateType = "21f77e31d96ae811ab3100ac6a4a134f";//凯利指数 21f77e31d96ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(query[8]); ca.POdd = -1; ca.FOdd = Convert.ToDouble(query[9]); ca.Remark = url; ca.Id = CommonHelper.GetGuid().ToString(); ca.GameId = oc.GameId; csalist.Add(ca); ca = new F_Compensate(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = Convert.ToDateTime(query[1]); ca.CompensateType = "a1bfa33cd96ae811ab3100ac6a4a134f";//赔付率 a1bfa33cd96ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(query[10]); ca.POdd = -1; ca.FOdd = -1; ca.Remark = url; ca.Id = CommonHelper.GetGuid().ToString(); ca.GameId = oc.GameId; csalist.Add(ca); } catch (Exception e) { } } /// /// 插入数据欧赔固化数据 /// /// /// /// public void InsertOddsCuring(string data, string Id, string url,DateTime date, string HomeTeamId,string VisitingTeamId,string HomeTeamName,string VisitingTeamName) { try { var query = data.Replace("↓", "").Replace("↑", "").Split('|'); F_OddsCuring oc = new F_OddsCuring(); oc.Init_SOdd = Convert.ToDouble(query[2]); oc.Init_POdd = Convert.ToDouble(query[3]); oc.Init_FOdd = Convert.ToDouble(query[4]); oc.Newest_SOdd = Convert.ToDouble(query[5]); oc.Newest_POdd = Convert.ToDouble(query[6]); oc.Newest_FOdd = Convert.ToDouble(query[7]); oc.Probability_SOdd = Convert.ToDouble(query[9]); oc.Probability_POdd = Convert.ToDouble(query[10]); oc.Probability_FOdd = Convert.ToDouble(query[11]); oc.Kelly_SOdd = Convert.ToDouble(query[12]); oc.Kelly_POdd = Convert.ToDouble(query[13]); oc.Kelly_FOdd = Convert.ToDouble(query[14]); oc.Loss_Odd = Convert.ToDouble(query[15]); oc.BankerCompanyName = query[1]; oc.BankerCompanyId = query[1]; oc.Remark = url; oc.Id = CommonHelper.GetGuid().ToString(); oc.CreateDateTime = DateTime.Now; oc.GameId = Id; oc.ChangeDateTime = Convert.ToDateTime(query[8]); oc.HomeTeamId = HomeTeamId; oc.HomeTeamName = HomeTeamName; oc.VisitingTeamId = VisitingTeamId; oc.VisitingTeamName = VisitingTeamName; oclist.Add(oc); Getbjopdetail(url, oc); } catch (Exception e) { } } public DateTime GetDate(string time,DateTime date) { time = time.Replace("更新时间:赛前", "").Replace("时","|").Replace("分","").Trim(); var query = time.Split('|'); if (query.Length == 1) date.AddMinutes(Convert.ToInt32(query[0])); if (query.Length == 2) date.AddMinutes(Convert.ToInt32(query[1])).AddHours(Convert.ToInt32(query[0])); return date; } /// /// 插入数据欧赔固化分析数据 /// /// /// /// public void InsertCuringAnalysis(string data, string Id, string url) { var query = data.Split('|'); F_CuringAnalysis ca = new F_CuringAnalysis(); ca.Remark = url; ca.Id= CommonHelper.GetGuid().ToString(); ca.CreateDateTime = DateTime.Now; ca.CuringType = "0046feff428ee811af5a2c4d54d3f5a9"; if (query[1] == "平均值") ca.CuringAnalysisType = b1; if (query[1] == "最大值") ca.CuringAnalysisType = b2; if (query[1] == "最小值") ca.CuringAnalysisType = b3; ca.GameId = Id; ca.Init_SOdd = Convert.ToDouble(query[2]); ca.Init_POdd = Convert.ToDouble(query[3]); ca.Init_FOdd = Convert.ToDouble(query[4]); ca.Newest_SOdd = Convert.ToDouble(query[5]); ca.Newest_POdd = Convert.ToDouble(query[6]); ca.Newest_FOdd = Convert.ToDouble(query[7]); ca.Probability_SOdd = Convert.ToDouble(query[9]); ca.Probability_POdd = Convert.ToDouble(query[10]); ca.Probability_FOdd = Convert.ToDouble(query[11]); ca.Kelly_SOdd = Convert.ToDouble(query[12]); ca.Kelly_POdd = Convert.ToDouble(query[13]); ca.Kelly_FOdd = Convert.ToDouble(query[14]); ca.Loss_Odd= Convert.ToDouble(query[15]); calist.Add(ca); } /// /// 插入数据欧赔固化分析数据 /// /// /// /// public F_CuringAnalysis InsertCuringAnalysis_new(string data, string Id, string url) { var query = data.Split('|'); F_CuringAnalysis ca = new F_CuringAnalysis(); ca.Remark = url; ca.Id = CommonHelper.GetGuid().ToString(); ca.CreateDateTime = DateTime.Now; ca.CuringType = "0046feff428ee811af5a2c4d54d3f5a9"; if (query[1] == "平均值") ca.CuringAnalysisType = b1; if (query[1] == "最大值") ca.CuringAnalysisType = b2; if (query[1] == "最小值") ca.CuringAnalysisType = b3; ca.GameId = Id; ca.Init_SOdd = Convert.ToDouble(query[2]); ca.Init_POdd = Convert.ToDouble(query[3]); ca.Init_FOdd = Convert.ToDouble(query[4]); ca.Newest_SOdd = Convert.ToDouble(query[5]); ca.Newest_POdd = Convert.ToDouble(query[6]); ca.Newest_FOdd = Convert.ToDouble(query[7]); ca.Probability_SOdd = Convert.ToDouble(query[9]); ca.Probability_POdd = Convert.ToDouble(query[10]); ca.Probability_FOdd = Convert.ToDouble(query[11]); ca.Kelly_SOdd = Convert.ToDouble(query[12]); ca.Kelly_POdd = Convert.ToDouble(query[13]); ca.Kelly_FOdd = Convert.ToDouble(query[14]); ca.Loss_Odd = Convert.ToDouble(query[15]); return ca; } //public static string b1 = "c06f47ca4f8ee811af5a2c4d54d3f5a9", b2 = "00ae03d14f8ee811af5a2c4d54d3f5a9", b3 = "30d122dc4f8ee811af5a2c4d54d3f5a9"; public static string b1 = "b1b112fa278ee811a04200ac6a4a134f", b2 = "b2b112fa278ee811a04200ac6a4a134f", b3 = "b1bf8c08288ee811a04200ac6a4a134f"; //平均值 b1b112fa278ee811a04200ac6a4a134f //最小值 b2b112fa278ee811a04200ac6a4a134f //最大值 b1bf8c08288ee811a04200ac6a4a134f /// /// 插入数据赛季分析表 /// /// /// /// public void InsertSeasonAnalysis(string data, string Id, string url,string Season) { // List salist1 = salist; //if (salist1.Where(a => a.Id == Id).ToList().Count > 0) //return; var query = data.Split('|'); try { F_SeasonAnalysis sa = new F_SeasonAnalysis(); sa.Remark = url; sa.Id = CommonHelper.GetGuid().ToString(); sa.CreateDateTime = DateTime.Now; sa.Season = Season; sa.TeamId = Id; sa.OldRanking = query[0].TryToInt32(); sa.NowOldRanking = query[1].TryToInt32(); sa.Win = query[2].TryToInt32(); sa.Draw = query[3].TryToInt32(); sa.Lose = query[4].TryToInt32(); sa.Number = query[5].TryToInt32(); salist.Add(sa); } catch (Exception e) { F_SeasonAnalysis sa = new F_SeasonAnalysis(); sa.Remark = url; sa.Id = CommonHelper.GetGuid().ToString(); sa.CreateDateTime = DateTime.Now; sa.Season = Season; sa.TeamId = Id; sa.OldRanking = query[0].TryToInt32(); sa.NowOldRanking = query[0].TryToInt32(); sa.Win = 0; sa.Draw = 0; sa.Lose = 0; sa.Number = query[1].TryToInt32(); salist.Add(sa); } } /// /// 插入数据赛季分析表 /// /// /// /// public F_SeasonAnalysis InsertSeasonAnalysis_new(string data, string Id, string url, string Season) { // List salist1 = salist; //if (salist1.Where(a => a.Id == Id).ToList().Count > 0) //return; var query = data.Split('|'); try { F_SeasonAnalysis sa = new F_SeasonAnalysis(); sa.Remark = url; sa.Id = CommonHelper.GetGuid().ToString(); sa.CreateDateTime = DateTime.Now; sa.Season = Season; sa.TeamId = Id; sa.OldRanking = query[0].TryToInt32(); sa.NowOldRanking = query[1].TryToInt32(); sa.Win = query[2].TryToInt32(); sa.Draw = query[3].TryToInt32(); sa.Lose = query[4].TryToInt32(); sa.Number = query[5].TryToInt32(); //salist.Add(sa); return sa; } catch (Exception e) { return new F_SeasonAnalysis(); } } #region 更新 public void Getbjop_new(string url, F_Games game) { using (OddsJob c = new OddsJob()) { c.UseLimitedResource(url, game); } } public void Getbjopdetail_new(string url, F_OddsCuring oc) { try { //Trace.WriteLine("欧赔所有分析获取 开始:" + "http://fenxi.zgzcw.com" + url); string yurl = url; if (!url.Contains("http://fenxi.zgzcw.com")) url = "http://fenxi.zgzcw.com" + url.Replace(":80", ""); var htmlResource = CommonHelper.GetHtmlString(url, "足彩"); HtmlDocument doc = new HtmlDocument(); if (htmlResource == null) return; doc.LoadHtml(htmlResource); HtmlNodeCollection detailHtml = doc.DocumentNode.SelectNodes("//*[@class='dxzkt-tab']/tr"); if (detailHtml == null) return; DateTime date = Convert.ToDateTime(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")); DateTime jdate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")); foreach (var item in detailHtml) { HtmlDocument doc1 = new HtmlDocument(); doc1.LoadHtml(item.InnerHtml); HtmlNodeCollection bjopfxtdHtml = doc1.DocumentNode.SelectNodes("//td"); if (bjopfxtdHtml != null) { if (bjopfxtdHtml.Count == 11) { string shuju = ""; int i = 0; DateTime newdate = DateTime.Now; foreach (var item1 in bjopfxtdHtml) { shuju += item1.InnerText.Trim() + "|"; if (i == 1) { try { newdate = Convert.ToDateTime(item1.InnerText.Trim()); } catch (Exception e) { } } i++; } if (newdate > date && newdate < jdate) { InsertCompensate(shuju, oc, url); } } } } } catch (Exception e) { Trace.WriteLine("报错开始 开始:" + "http://fenxi.zgzcw.com" + url); //Getbjopdetail(url, oc); } } /// /// 插入数据欧赔固化数据 /// /// /// /// public void InsertOddsCuring_new(string data, string Id, string url, DateTime date, string HomeTeamId, string VisitingTeamId, string HomeTeamName, string VisitingTeamName,string jsonall,DateTime lastdate) { try { var query = data.Replace("↓", "").Replace("↑", "").Split('|'); F_OddsCuring oc = new F_OddsCuring(); oc.Init_SOdd = Convert.ToDouble(query[2]); oc.Init_POdd = Convert.ToDouble(query[3]); oc.Init_FOdd = Convert.ToDouble(query[4]); oc.Newest_SOdd = Convert.ToDouble(query[5]); oc.Newest_POdd = Convert.ToDouble(query[6]); oc.Newest_FOdd = Convert.ToDouble(query[7]); oc.Probability_SOdd = Convert.ToDouble(query[9]); oc.Probability_POdd = Convert.ToDouble(query[10]); oc.Probability_FOdd = Convert.ToDouble(query[11]); oc.Kelly_SOdd = Convert.ToDouble(query[12]); oc.Kelly_POdd = Convert.ToDouble(query[13]); oc.Kelly_FOdd = Convert.ToDouble(query[14]); oc.Loss_Odd = Convert.ToDouble(query[15]); oc.BankerCompanyName = query[1]; oc.BankerCompanyId = query[1]; oc.Remark = url; oc.Id = CommonHelper.GetGuid().ToString(); oc.CreateDateTime = DateTime.Now; oc.GameId = Id; oc.ChangeDateTime = Convert.ToDateTime(query[8]); oc.HomeTeamId = HomeTeamId; oc.HomeTeamName = HomeTeamName; oc.VisitingTeamId = VisitingTeamId; oc.VisitingTeamName = VisitingTeamName; F_Compensate ca = new F_Compensate(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = lastdate; ca.CompensateType = "20f77e31d96ae811ab3100ac6a4a134f";//概率 20f77e31d96ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(query[9]); ca.POdd = Convert.ToDouble(query[10]); ca.FOdd = Convert.ToDouble(query[11]); ca.Remark = url; ca.Id = CommonHelper.GetGuid().ToString(); ca.GameId = oc.GameId; csalist.Add(ca); ca = new F_Compensate(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = lastdate; ca.CompensateType = "21f77e31d96ae811ab3100ac6a4a134f";//凯利指数 21f77e31d96ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(query[12]); ca.POdd = Convert.ToDouble(query[13]); ca.FOdd = Convert.ToDouble(query[14]); ca.Remark = url; ca.Id = CommonHelper.GetGuid().ToString(); ca.GameId = oc.GameId; csalist.Add(ca); ca = new F_Compensate(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = lastdate; ca.CompensateType = "a1bfa33cd96ae811ab3100ac6a4a134f";//赔付率 a1bfa33cd96ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(query[15]); ca.POdd = -1; ca.FOdd = -1; ca.Remark = url; ca.Id = CommonHelper.GetGuid().ToString(); ca.GameId = oc.GameId; csalist.Add(ca); lock (oclist) { oclist.Add(oc); } Getbjopdetail_new_json(jsonall, oc.BankerCompanyName, lastdate, oc); } catch (Exception e) { } } /// /// 插入数据欧赔固化数据 /// /// /// /// public op InsertOddsCuring_new2(string data, string Id, string url, DateTime date, string HomeTeamId, string VisitingTeamId, string HomeTeamName, string VisitingTeamName, string jsonall, DateTime lastdate) { try { op op = new op(); var query = data.Replace("↓", "").Replace("↑", "").Split('|'); F_OddsCuring oc = new F_OddsCuring(); oc.Init_SOdd = Convert.ToDouble(query[2]); oc.Init_POdd = Convert.ToDouble(query[3]); oc.Init_FOdd = Convert.ToDouble(query[4]); oc.Newest_SOdd = Convert.ToDouble(query[5]); oc.Newest_POdd = Convert.ToDouble(query[6]); oc.Newest_FOdd = Convert.ToDouble(query[7]); oc.Probability_SOdd = Convert.ToDouble(query[9]); oc.Probability_POdd = Convert.ToDouble(query[10]); oc.Probability_FOdd = Convert.ToDouble(query[11]); oc.Kelly_SOdd = Convert.ToDouble(query[12]); oc.Kelly_POdd = Convert.ToDouble(query[13]); oc.Kelly_FOdd = Convert.ToDouble(query[14]); oc.Loss_Odd = Convert.ToDouble(query[15]); oc.BankerCompanyName = query[1]; oc.BankerCompanyId = query[1]; oc.Remark = url; oc.Id = CommonHelper.GetGuid().ToString(); oc.CreateDateTime = DateTime.Now; oc.GameId = Id; oc.ChangeDateTime = Convert.ToDateTime(query[8]); oc.HomeTeamId = HomeTeamId; oc.HomeTeamName = HomeTeamName; oc.VisitingTeamId = VisitingTeamId; oc.VisitingTeamName = VisitingTeamName; op.odds = oc; F_Compensate ca = new F_Compensate(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = lastdate; ca.CompensateType = "20f77e31d96ae811ab3100ac6a4a134f";//概率 20f77e31d96ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(query[9]); ca.POdd = Convert.ToDouble(query[10]); ca.FOdd = Convert.ToDouble(query[11]); ca.Remark = url; ca.Id = CommonHelper.GetGuid().ToString(); ca.GameId = oc.GameId; op.oddsdetail.Add(ca); ca = new F_Compensate(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = lastdate; ca.CompensateType = "21f77e31d96ae811ab3100ac6a4a134f";//凯利指数 21f77e31d96ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(query[12]); ca.POdd = Convert.ToDouble(query[13]); ca.FOdd = Convert.ToDouble(query[14]); ca.Remark = url; ca.Id = CommonHelper.GetGuid().ToString(); ca.GameId = oc.GameId; op.oddsdetail.Add(ca); ca = new F_Compensate(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = lastdate; ca.CompensateType = "a1bfa33cd96ae811ab3100ac6a4a134f";//赔付率 a1bfa33cd96ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(query[15]); ca.POdd = -1; ca.FOdd = -1; ca.Remark = url; ca.Id = CommonHelper.GetGuid().ToString(); ca.GameId = oc.GameId; op.oddsdetail.Add(ca); var c_list=Getbjopdetail_new_json2(jsonall, oc.BankerCompanyName, lastdate, oc); op.oddsdetail.AddRange(c_list); return op; } catch (Exception e) { return new op(); } } public void Getbjopdetail_new_json(string jsonurl, string BankerCompanyName, DateTime lastdate, F_OddsCuring oc) { var obj = JsonConvert.DeserializeObject(jsonurl); var list = obj["company5List"]; var objw = JsonConvert.DeserializeObject>(list.ToString()); var objw1 = objw.Where(a => a.attribute.name == BankerCompanyName).FirstOrDefault(); if (objw1 == null) return; foreach (var item in objw1.c) { if (lastdate == item.attribute.wdate.TryToDateTime()) continue; if (item.attribute.wdate.TryToDateTime() > Convert.ToDateTime(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")) ) { F_Compensate ca = new F_Compensate(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = Convert.ToDateTime(item.attribute.wdate.TryToDateTime()); ca.CompensateType = "a0bfa33cd96ae811ab3100ac6a4a134f";//即时赔率 a0bfa33cd96ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(item.attribute.win); ca.POdd = Convert.ToDouble(item.attribute.same); ca.FOdd = Convert.ToDouble(item.attribute.lost); ca.Remark = ""; ca.Id = CommonHelper.GetGuid().ToString(); ca.GameId = oc.GameId; lock (csalist) { csalist.Add(ca); } } else { var s1 = item.attribute.wdate.TryToDateTime(); var s2 = Convert.ToDateTime(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")); } } } public List Getbjopdetail_new_json2(string jsonurl, string BankerCompanyName, DateTime lastdate, F_OddsCuring oc) { List c_list = new List(); var obj = JsonConvert.DeserializeObject(jsonurl); var list = obj["company5List"]; var objw = JsonConvert.DeserializeObject>(list.ToString()); var objw1 = objw.Where(a => a.attribute.name == BankerCompanyName).FirstOrDefault(); if (objw1 == null) return new List(); foreach (var item in objw1.c) { if (lastdate == item.attribute.wdate.TryToDateTime()) continue; if (item.attribute.wdate.TryToDateTime() > Convert.ToDateTime(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"))) { F_Compensate ca = new F_Compensate(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = Convert.ToDateTime(item.attribute.wdate.TryToDateTime()); ca.CompensateType = "a0bfa33cd96ae811ab3100ac6a4a134f";//即时赔率 a0bfa33cd96ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(item.attribute.win); ca.POdd = Convert.ToDouble(item.attribute.same); ca.FOdd = Convert.ToDouble(item.attribute.lost); ca.Remark = ""; ca.Id = CommonHelper.GetGuid().ToString(); ca.GameId = oc.GameId; c_list.Add(ca); } else { var s1 = item.attribute.wdate.TryToDateTime(); var s2 = Convert.ToDateTime(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")); } } return c_list; } public class company5List { public company5List() { c = new List(); } public Attribute attribute { get; set; } public List c { get; set; } } public class Attribute { public string name { get; set; } public string cid { get; set; } } public class sk { public sk2 attribute { get; set; } public string value { get; set; } } public class op { public op() { oddsdetail = new List(); } public F_OddsCuring odds { get; set; } public List oddsdetail { get; set; } } public class sk2 { public string lost { get; set; } public string lostch { get; set; } public string arq { get; set; } public string wdate { get; set; } public string win { get; set; } public string wdate1 { get; set; } public string same { get; set; } public string cid { get; set; } public string samech { get; set; } public string alost { get; set; } public string awin { get; set; } public string winch { get; set; } public string returnPer { get; set; } public string arq_num { get; set; } public string same_handicap { get; set; } } #endregion public void UseLimitedResource(string url, F_Games game) { try { List sa_new = new List(); url = url.Replace(":80", "").Replace("ypdb", "bjop"); string yurl = url; string jsonall = CommonHelper.GetHtmlString(url.Replace("fenxi.zgzcw.com", "fenxi.zgzcw.com/json"), "", 5 * 1000); var htmlResource = CommonHelper.GetHtmlString(url, "", 5 * 1000); HtmlDocument doc = new HtmlDocument(); if (htmlResource == null) return; if (htmlResource == ConfigurationManager.AppSettings["HttpException"].ToString()) return; doc.LoadHtml(htmlResource); //赔率集合 HtmlNodeCollection bjopHtml = doc.DocumentNode.SelectNodes("//*[@class='bf-tab-02']/tr"); if (bjopHtml == null) return; string HomeTeamName = ""; HtmlNodeCollection homenameHtml = doc.DocumentNode.SelectNodes("//*[@class='host-name']/a"); if (homenameHtml != null) { var q1 = teamlist.Where(a => a.Name == homenameHtml[0].InnerText.Trim()).FirstOrDefault(); string data = ""; if (q1 != null) { HomeTeamName = q1.Name; HtmlNodeCollection homepmHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-zd']"); if (homepmHtml[0].InnerText.Trim().Contains("上赛季排名")) { data = "" + string.Join("|", homepmHtml[0].InnerText.Trim().Replace("上赛季排名:", "").Replace("本赛季排名", "").Split(':')); HtmlNodeCollection homedfHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-h']"); data += "|" + homedfHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", ""); } else { data = "" + homepmHtml[0].InnerText.Trim().Replace("FIFA排名:", ""); HtmlNodeCollection homedfHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-h']"); data += "|" + homedfHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "").Replace("积分", ""); } var sa_sea=InsertSeasonAnalysis_new(data, q1.Id, url, game.Season); if (sa_sea != null) sa_new.Add(sa_sea); } } string VisitingTeamName = ""; HtmlNodeCollection visitingnameHtml = doc.DocumentNode.SelectNodes("//*[@class='visit-name']/a"); if (visitingnameHtml != null) { string data = ""; var q2 = teamlist.Where(a => a.Name == visitingnameHtml[0].InnerText.Trim()).FirstOrDefault(); if (q2 != null) { VisitingTeamName = q2.Name; HtmlNodeCollection homepmkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-kd']"); if (homepmkHtml[0].InnerText.Trim().Contains("上赛季排名")) { data = "" + string.Join("|", homepmkHtml[0].InnerText.Trim().Replace("上赛季排名:", "").Replace("本赛季排名", "").Split(':')); HtmlNodeCollection homedfkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-v']"); data += "|" + homedfkHtml[0].InnerText.Trim().Replace("客队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", ""); } else { data = "" + homepmkHtml[0].InnerText.Trim().Replace("FIFA排名:", ""); HtmlNodeCollection homedfkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-info-v']"); data += "|" + homedfkHtml[0].InnerText.Trim().Replace("主队:", "").Replace("胜", "|").Replace("平", "|").Replace("负", "|").Replace("分", "").Replace("积分", ""); } var sa_sea = InsertSeasonAnalysis_new(data, q2.Id, url, game.Season); if (sa_sea != null) sa_new.Add(sa_sea); } } salist.AddRange(sa_new); List listdetail = new List(); foreach (var item in bjopHtml) { HtmlDocument doc1 = new HtmlDocument(); doc1.LoadHtml(item.InnerHtml); HtmlNodeCollection bjoptdHtml = doc1.DocumentNode.SelectNodes("//td"); int i = 1; string shuju = "", nurl = "", lasttime = ""; foreach (var item1 in bjoptdHtml) { if (i == 2) { // shuju += item1.InnerText.Trim()+"|"; try { String SD = item1.InnerText.Trim() + "|" + item1.Attributes["data"].Value; Companylist.Add(SD); } catch (Exception e) { string aa = item1.InnerText.Trim(), ss = item1.Attributes["data"].Value; } } if (i == 6) { shuju += item1.InnerText.Trim() + "|"; nurl = item1.SelectNodes("//a")[0].Attributes["href"].Value.Trim(); } else if (i == 9) { shuju += item.Attributes["firsttime"].Value + "|"; lasttime = item.Attributes["lasttime"].Value; } else { shuju += item1.InnerText.Trim() + "|"; } i++; } DateTime lastdate = CommonHelper.ConvertIntToDateTime(lasttime); var op=InsertOddsCuring_new2(shuju, game.Id, nurl, game.StartDateTime.TryToDateTime(), game.HomeTeamId, game.VisitingTeamId, HomeTeamName, VisitingTeamName, jsonall, Convert.ToDateTime(lastdate)); oclist.Add(op.odds); csalist.AddRange(op.oddsdetail); } //class="bf-tab-03" HtmlNodeCollection bjopfxHtml = doc.DocumentNode.SelectNodes("//*[@class='bf-tab-03']/tr"); if (bjopfxHtml == null) return; foreach (var item in bjopfxHtml) { HtmlDocument doc1 = new HtmlDocument(); doc1.LoadHtml(item.InnerHtml); HtmlNodeCollection bjopfxtdHtml = doc1.DocumentNode.SelectNodes("//td"); if (bjopfxtdHtml.Count == 17) { string shuju = ""; foreach (var item1 in bjopfxtdHtml) { shuju += item1.InnerText.Trim() + "|"; } var ca_n=InsertCuringAnalysis_new(shuju, game.Id, url); calist.Add(ca_n); } } } catch (Exception e) { Trace.WriteLine("报错开始 开始:" + url); } } void IDisposable.Dispose() { // Console.WriteLine("我在释放"); } } }