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.ZCLotteryAsianDish { class AsianDishJob : CommonJob, IJob, IDisposable { public AsianDishJob() { logName = "AsianDishJob"; 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"); 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 AsianDishStatus =('903f7b12da6ae811ab3100ac6a4a134f') )").ToList()); } catch (Exception) { } try { query1.AddRange(services.Query(" and (GameId = ('" + item.Id + "') and AsianDishStatus =('913f7b12da6ae811ab3100ac6a4a134f') )").ToList()); } catch (Exception) { } } for (int i = 0; i < query1.Count; i++) { listDetailint.Add(query1[i].PK); } if (listDetailint.Count > 0) { 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='c02e910a438ee811af5a2c4d54d3f5a9'") == null ? new List() : services.Query(" and GameId in ('" + string.Join("','", listGameId) + "') and CuringType='c02e910a438ee811af5a2c4d54d3f5a9'").ToList(); for (int i = 0; i < query3.Count; i++) { listAnalysisint.Add(query3[i].PK); } } } for (int j = 0; j < page; j++) { Trace.WriteLine("第几个J 开始 AsianDishJob :" + (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); } var listbk = services.Query().ToList(); Thread.Sleep(1000); oclist = oclist.Where(a => a != null).ToList(); foreach (var item in oclist) { F_AsianDishCuring oc_new = new F_AsianDishCuring(); if (item != null) { oc_new = item; 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); } } } Thread.Sleep(1000); csalist = csalist.Where(a => a != null).ToList(); foreach (var item in csalist) { F_AsianDish cp = new F_AsianDish(); 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); } } } { calist = 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("插入固化分析数据 开始:" + 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 (csalist_new.Count > 0) services.SqlBulkCopyAdd(list_com); 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); Trace.WriteLine("删除数据 F_AsianDish 初始数据 开始:" + 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_AsianDish 结束中:" + listDetailint1.Count); } } else { services.Delete(" and PK in (" + string.Join(",", listDetailint) + ")"); } } Trace.WriteLine("删除数据 F_AsianDish 初始数据 结束:" + listDetailint.Count); Trace.WriteLine("删除数据 F_AsianDishCuring 开始:" + listCuringint.Count); if (listCuringint.Count > 0) services.Delete(" and PK in (" + string.Join(",", listCuringint) + ")"); Trace.WriteLine("删除数据 F_AsianDishCuring 结束:" + listCuringint.Count); 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(300, 300); for (int j = 788; j < page; j++) { Trace.WriteLine("第几个J 开始:" + (j + 1)); Gamelistq = Gamelistq.Skip(j * 100).Take(100).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); } var listbk = services.Query().ToList(); try { //oclist.ForEach(p => //{ // Task.Run(() => // { // try // { // Trace.WriteLine("更换公司Id:"); // F_AsianDishCuring oc_new = new F_AsianDishCuring(); // if (p != null) // { // oc_new = p; // oc_new.BankerCompanyId = listbk.Where(a => a.Name == p.BankerCompanyId).FirstOrDefault().Id; // // Getbjop(p.Remark, p); // oclist_new.Add(oc_new); // } // } // catch (Exception e) // { // } // }); //}); Task[] processors = new Task[oclist.Count]; for (int i = 0; i < oclist.Count; i++) { int processId = i; processors[i] = Task.Run( () => { try { Trace.WriteLine("更换公司Id:"); F_AsianDishCuring oc_new = new F_AsianDishCuring(); if (oclist[processId] != null) { oc_new = oclist[processId]; oc_new.BankerCompanyId = listbk.Where(a => a.Name == oclist[processId].BankerCompanyId).FirstOrDefault().Id; // Getbjop(p.Remark, p); oclist_new.Add(oc_new); } } catch (Exception e) { } } ); } } catch (Exception r) { } while (true) { if (CommonHelper.ThreadsFinsh()) break; } csalist.ForEach(p => { Task.Run(() => { if (p != null) { lock (csalist) { Trace.WriteLine("更换公司Id:" + csalist.IndexOf(p)); F_AsianDish cp = new F_AsianDish(); 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 Gamelist = 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 static List Gamelistq = new List(); public List csalist_new = new List(); public void Getbjop(string url, F_Games game) { url = url.Replace(":80", "").Replace("ypdb", "ypdb"); //class="bf-tab-02" // Trace.WriteLine("亚盘分析 开始:" + url); string yurl = url; ; var htmlResource = NetHelper.GetUrlResponse(url, Encoding.GetEncoding("utf-8")); HtmlDocument doc = new HtmlDocument(); if (htmlResource == null) return; if (htmlResource.Contains("lg123456")) { urllist.Add(url + "|" + game.Id); return; } if (htmlResource.Contains("403 Forbidden")) { urllist.Add(url + "|" + game.Id); 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); } 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 == 15) { string shuju = ""; foreach (var item1 in bjopfxtdHtml) { shuju += item1.InnerText.Trim() + "|"; } InsertCuringAnalysis(shuju, game.Id, url); } } } public void Getbjopdetail(string url, F_AsianDishCuring oc,string date) { try { //插入初始 InsertCompensate_start(oc,date); //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 = NetHelper.GetUrlResponse(url, Encoding.GetEncoding("utf-8")); HtmlDocument doc = new HtmlDocument(); if (htmlResource == null) return; if (htmlResource.Contains("lg123456")) { urllist1.Add(url + "|" + oc.Id); return; } if (htmlResource.Contains("403 Forbidden")) { urllist1.Add(url + "|" + oc.Id); 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) { 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 (item.IsEmpty()) continue; // if (!item1.Trim().IsEmpty()) { BankerCompanyRelation bcr = new BankerCompanyRelation(); bcr.BankerCompanyId = listbk.Where(a => a.Name == query[0]).FirstOrDefault().Id; bcr.BankerCompanyType = a4; 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_AsianDishCuring oc, string url) { try { var query = data.Replace("↓", "").Replace("↑", "").Split('|'); F_AsianDish ca = new F_AsianDish(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = Convert.ToDateTime(query[1]); ca.AsianDishStatus = "913f7b12da6ae811ab3100ac6a4a134f";//及时盘口赔率 913f7b12da6ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(query[3]); ca.POdd = -1; ca.Disc = Convert.ToString(query[4]) == null ? "" : Convert.ToString(query[4]); ca.FOdd = Convert.ToDouble(query[5]); ca.Remark = url; ca.Id = CommonHelper.GetGuid().ToString(); ca.GameId = oc.GameId; csalist.Add(ca); } catch (Exception e) { } } /// /// 插入数据亚盘数据-初始 /// /// /// /// public void InsertCompensate_start(F_AsianDishCuring oc,string date) { try { F_AsianDish ca = new F_AsianDish(); ca.BankerCompanyId = oc.BankerCompanyId; try { ca.ChangeDateTime = Convert.ToDateTime(date); } catch (Exception e) { ca.ChangeDateTime = Convert.ToDateTime("1999-01-01 00:01"); } ca.AsianDishStatus = "903f7b12da6ae811ab3100ac6a4a134f";//初始盘口赔率 903f7b12da6ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(oc.Init_SOdd); ca.POdd = -1; ca.Disc = oc.Init_DiscName; ca.FOdd = Convert.ToDouble(oc.Init_FOdd); ca.Remark = ""; 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_AsianDishCuring oc = new F_AsianDishCuring(); oc.Init_SOdd = Convert.ToDouble(query[2]); oc.Init_DiscName = query[3]; oc.Init_FOdd = Convert.ToDouble(query[4]); oc.Newest_SOdd = Convert.ToDouble(query[5]); oc.Newest_DiscName = query[6]; oc.Newest_FOdd = Convert.ToDouble(query[7]); oc.Probability_SOdd = Convert.ToDouble(query[9]); oc.Probability_FOdd = Convert.ToDouble(query[10]); oc.Kelly_SOdd = Convert.ToDouble(query[11]); oc.Kelly_FOdd = Convert.ToDouble(query[12]); oc.Loss_Odd = Convert.ToDouble(query[13]); oc.BankerCompanyName = query[1]; oc.BankerCompanyId = query[1]; oc.Remark = url; oc.Id = CommonHelper.GetGuid().ToString(); oc.CreateDateTime = DateTime.Now; oc.GameId = Id; try { oc.ChangeDateTime = Convert.ToDateTime(query[8]); } catch (Exception e) { oc.ChangeDateTime = DateTime.Now; } oc.HomeTeamId = HomeTeamId; oc.HomeTeamName = HomeTeamName; oc.VisitingTeamId = VisitingTeamId; oc.VisitingTeamName = VisitingTeamName; oclist.Add(oc); Getbjopdetail(url, oc,query[8]); } catch (Exception s) { } } 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) { try { var query = data.Split('|'); F_CuringAnalysis ca = new F_CuringAnalysis(); ca.Remark = url; ca.Id = CommonHelper.GetGuid().ToString(); ca.CreateDateTime = DateTime.Now; ca.CuringType = "c02e910a438ee811af5a2c4d54d3f5a9"; 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 = -1; ca.Init_FOdd = Convert.ToDouble(query[4]); ca.Newest_SOdd = Convert.ToDouble(query[5]); ca.Newest_POdd = -1; ca.Newest_FOdd = Convert.ToDouble(query[7]); ca.Probability_SOdd = Convert.ToDouble(query[9]); ca.Probability_POdd = -1; ca.Probability_FOdd = Convert.ToDouble(query[10]); ca.Kelly_SOdd = Convert.ToDouble(query[11]); ca.Kelly_POdd = -1; ca.Kelly_FOdd = Convert.ToDouble(query[12]); ca.Loss_Odd = -1; calist.Add(ca); } catch (Exception e) { } } /// /// 插入数据亚盘固化分析数据 /// /// /// /// public F_CuringAnalysis InsertCuringAnalysis2(string data, string Id, string url) { try { var query = data.Split('|'); F_CuringAnalysis ca = new F_CuringAnalysis(); ca.Remark = url; ca.Id = CommonHelper.GetGuid().ToString(); ca.CreateDateTime = DateTime.Now; ca.CuringType = "c02e910a438ee811af5a2c4d54d3f5a9"; 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 = -1; ca.Init_FOdd = Convert.ToDouble(query[4]); ca.Newest_SOdd = Convert.ToDouble(query[5]); ca.Newest_POdd = -1; ca.Newest_FOdd = Convert.ToDouble(query[7]); ca.Probability_SOdd = Convert.ToDouble(query[9]); ca.Probability_POdd = -1; ca.Probability_FOdd = Convert.ToDouble(query[10]); ca.Kelly_SOdd = Convert.ToDouble(query[11]); ca.Kelly_POdd = -1; ca.Kelly_FOdd = Convert.ToDouble(query[12]); ca.Loss_Odd = -1; //calist.Add(ca); return ca; } catch (Exception e) { return new F_CuringAnalysis(); } } //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 (AsianDishJob c = new AsianDishJob()) { c.UseLimitedResource(url, game); } } public void Getbjopdetail_new(string url, F_AsianDishCuring oc, string date) { try { //插入初始 InsertCompensate_start(oc, date); //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 = NetHelper.GetUrlResponse(url, Encoding.GetEncoding("utf-8")); HtmlDocument doc = new HtmlDocument(); if (htmlResource == null) return; if (htmlResource.Contains("lg123456")) { urllist1.Add(url + "|" + oc.Id); return; } if (htmlResource.Contains("403 Forbidden")) { urllist1.Add(url + "|" + oc.Id); return; } doc.LoadHtml(htmlResource); HtmlNodeCollection detailHtml = doc.DocumentNode.SelectNodes("//*[@class='dxzkt-tab']/tr"); if (detailHtml == null) return; DateTime date1 = 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 = ""; DateTime newdate=DateTime.Now; int i = 0; 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 > date1 && newdate < jdate) { InsertCompensate(shuju, oc, url); } //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_AsianDishCuring oc = new F_AsianDishCuring(); oc.Init_SOdd = Convert.ToDouble(query[2]); oc.Init_DiscName = query[3]; oc.Init_FOdd = Convert.ToDouble(query[4]); oc.Newest_SOdd = Convert.ToDouble(query[5]); oc.Newest_DiscName = query[6]; oc.Newest_FOdd = Convert.ToDouble(query[7]); oc.Probability_SOdd = Convert.ToDouble(query[9]); oc.Probability_FOdd = Convert.ToDouble(query[10]); oc.Kelly_SOdd = Convert.ToDouble(query[11]); oc.Kelly_FOdd = Convert.ToDouble(query[12]); oc.Loss_Odd = Convert.ToDouble(query[13]); oc.BankerCompanyName = query[1]; oc.BankerCompanyId = query[1]; oc.Remark = url; oc.Id = CommonHelper.GetGuid().ToString(); oc.CreateDateTime = DateTime.Now; oc.GameId = Id; try { oc.ChangeDateTime = Convert.ToDateTime(query[8]); } catch (Exception e) { oc.ChangeDateTime = DateTime.Now; } oc.HomeTeamId = HomeTeamId; oc.HomeTeamName = HomeTeamName; oc.VisitingTeamId = VisitingTeamId; oc.VisitingTeamName = VisitingTeamName; lock (oclist) { oclist.Add(oc); } F_AsianDish ca = new F_AsianDish(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = lastdate; ca.AsianDishStatus = "913f7b12da6ae811ab3100ac6a4a134f";//及时盘口赔率 913f7b12da6ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(query[5]); ca.POdd = -1; ca.Disc = query[6]; ca.FOdd = Convert.ToDouble(query[7]); ca.Remark = url; ca.Id = CommonHelper.GetGuid().ToString(); ca.GameId = oc.GameId; //csalist.Add(ca); lock (oclist) { csalist.Add(ca); } // Getbjopdetail_new(url, oc, query[8]); Getbjopdetail_new_json(jsonall, query[1], lastdate, oc); } catch (Exception s) { } } /// /// 插入数据亚盘固化数据 /// /// /// /// 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_AsianDishCuring oc = new F_AsianDishCuring(); oc.Init_SOdd = Convert.ToDouble(query[2]); oc.Init_DiscName = query[3]; oc.Init_FOdd = Convert.ToDouble(query[4]); oc.Newest_SOdd = Convert.ToDouble(query[5]); oc.Newest_DiscName = query[6]; oc.Newest_FOdd = Convert.ToDouble(query[7]); oc.Probability_SOdd = Convert.ToDouble(query[9]); oc.Probability_FOdd = Convert.ToDouble(query[10]); oc.Kelly_SOdd = Convert.ToDouble(query[11]); oc.Kelly_FOdd = Convert.ToDouble(query[12]); oc.Loss_Odd = Convert.ToDouble(query[13]); oc.BankerCompanyName = query[1]; oc.BankerCompanyId = query[1]; oc.Remark = url; oc.Id = CommonHelper.GetGuid().ToString(); oc.CreateDateTime = DateTime.Now; oc.GameId = Id; try { oc.ChangeDateTime = Convert.ToDateTime(query[8]); } catch (Exception e) { oc.ChangeDateTime = DateTime.Now; } oc.HomeTeamId = HomeTeamId; oc.HomeTeamName = HomeTeamName; oc.VisitingTeamId = VisitingTeamId; oc.VisitingTeamName = VisitingTeamName; op.Asian = oc; F_AsianDish ca = new F_AsianDish(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = lastdate; ca.AsianDishStatus = "913f7b12da6ae811ab3100ac6a4a134f";//及时盘口赔率 913f7b12da6ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(query[5]); ca.POdd = -1; ca.Disc = query[6]; ca.FOdd = Convert.ToDouble(query[7]); ca.Remark = url; ca.Id = CommonHelper.GetGuid().ToString(); ca.GameId = oc.GameId; //csalist.Add(ca); op.Asiandetail.Add(ca); // Getbjopdetail_new(url, oc, query[8]); var a_new= Getbjopdetail_new_json2(jsonall, query[1], lastdate, oc); op.Asiandetail.AddRange(a_new); return op; } catch (Exception s) { return new op(); } } public void Getbjopdetail_new_json(string jsonurl,string BankerCompanyName,DateTime lastdate, F_AsianDishCuring 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_AsianDish ca = new F_AsianDish(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = item.attribute.wdate.TryToDateTime(); ca.AsianDishStatus = "913f7b12da6ae811ab3100ac6a4a134f";//及时盘口赔率 913f7b12da6ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(item.attribute.win); ca.POdd = -1; ca.Disc = item.attribute.same_handicap; 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_AsianDishCuring oc) { List a_new = 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_AsianDish ca = new F_AsianDish(); ca.BankerCompanyId = oc.BankerCompanyId; ca.ChangeDateTime = item.attribute.wdate.TryToDateTime(); ca.AsianDishStatus = "913f7b12da6ae811ab3100ac6a4a134f";//及时盘口赔率 913f7b12da6ae811ab3100ac6a4a134f ca.CreateDateTime = DateTime.Now; ca.SOdd = Convert.ToDouble(item.attribute.win); ca.POdd = -1; ca.Disc = item.attribute.same_handicap; ca.FOdd = Convert.ToDouble(item.attribute.lost); ca.Remark = ""; ca.Id = CommonHelper.GetGuid().ToString(); ca.GameId = oc.GameId; a_new.Add(ca); } else { var s1 = item.attribute.wdate.TryToDateTime(); var s2 = Convert.ToDateTime(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")); } } return a_new; } 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 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", ""); 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); DateTime lastdate = DateTime.Now; 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 = ""; DateTime lasttime = DateTime.Now; foreach (var item1 in bjoptdHtml) { if (i == 2) { Companylist.Add(item1.InnerText.Trim() + "|" + item1.Attributes["data"].Value); } 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 + "|"; string datestring = timehtml[0].InnerText.Trim().Replace("更新时间:赛前", "").Replace("时", "|").Replace("分", ""); string Hours = "0"; string Minute = "0"; if (datestring.Split('|').Length == 2) { Hours = datestring.Split('|')[0]; Minute = datestring.Split('|')[1]; } else if (datestring.Split('|').Length == 1) { Hours = "0"; Minute = datestring.Split('|')[0]; } int Minutes = Minute.TryToInt32() + Hours.TryToInt32() * 60; lasttime = Convert.ToDateTime(game.StartDateTime).AddMinutes(-Minutes); } else { shuju += item1.InnerText.Trim() + "|"; } i++; } lastdate = lasttime; var op = InsertOddsCuring_new2(shuju, game.Id, nurl, game.StartDateTime.TryToDateTime(), game.HomeTeamId, game.VisitingTeamId, HomeTeamName, VisitingTeamName, jsonall, Convert.ToDateTime(lasttime)); oclist.Add(op.Asian); csalist.AddRange(op.Asiandetail); } //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 == 15) { string shuju = ""; foreach (var item1 in bjopfxtdHtml) { shuju += item1.InnerText.Trim() + "|"; } var ca_n = InsertCuringAnalysis2(shuju, game.Id, url); calist.Add(ca_n); } } } catch (Exception e) { //throw; } } void IDisposable.Dispose() { //Console.WriteLine("我在释放"); } } public class op { public op() { Asiandetail = new List(); } public F_AsianDishCuring Asian { get; set; } public List Asiandetail { get; set; } } }