|
@@ -33,6 +33,8 @@ namespace FCS.Crawler.ZCLotterySizeIndex
|
|
|
private static List<int> listDetailint = new List<int>();
|
|
|
private static List<int> listAnalysisint = new List<int>();
|
|
|
private static List<string> listGameId = new List<string>();
|
|
|
+
|
|
|
+ private static List<F_SizeIndex> listDetailId = new List<F_SizeIndex>();
|
|
|
public void Click(List<F_Games> glist, List<F_Games> listxg)
|
|
|
{
|
|
|
try
|
|
@@ -80,23 +82,30 @@ namespace FCS.Crawler.ZCLotterySizeIndex
|
|
|
{
|
|
|
Trace.WriteLine("第几个J 开始 SizeIndexJob:" + (j));
|
|
|
Gamelist = Gamelistq.Skip(j * 1000).Take(1000).ToList();
|
|
|
- finishcount = 0;
|
|
|
threadCount = Gamelist.Count;
|
|
|
- Stopwatch sw = new Stopwatch();
|
|
|
- sw.Start();
|
|
|
- Gamelist.ForEach(p =>
|
|
|
+ finishcount = 0;
|
|
|
+ Gamelist.ForEach(async p =>
|
|
|
{
|
|
|
- taskList.Add( Task.Run(() =>
|
|
|
+ await Task.Run(() =>
|
|
|
{
|
|
|
- // Trace.WriteLine("大小分析 开始:" + Gamelist.IndexOf(p));
|
|
|
+ //Trace.WriteLine("欧赔分析 开始:" + Gamelist.IndexOf(p));
|
|
|
Getbjop_new(p.Remark, p);
|
|
|
-
|
|
|
- }));
|
|
|
-
|
|
|
+ });
|
|
|
+ lock (locker)
|
|
|
+ {
|
|
|
+ finishcount++;
|
|
|
+ Monitor.Pulse(locker); //完成,通知等待队列,告知已完,执行下一个。
|
|
|
+ }
|
|
|
});
|
|
|
- Task.WaitAll(taskList.ToArray());
|
|
|
- sw.Stop();
|
|
|
- Trace.WriteLine("大小分析 结束" + sw.ElapsedMilliseconds + "毫秒");
|
|
|
+ lock (locker)
|
|
|
+ {
|
|
|
+ while (finishcount != threadCount)
|
|
|
+ {
|
|
|
+ Thread.Sleep(5000);
|
|
|
+ Monitor.Wait(locker);//等待
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Trace.WriteLine("大小分析 结束毫秒");
|
|
|
Companylist = Companylist.Distinct().ToList();
|
|
|
InsertBankerCompany(Companylist);
|
|
|
InsertBankerCompany1();
|
|
@@ -126,78 +135,39 @@ namespace FCS.Crawler.ZCLotterySizeIndex
|
|
|
}
|
|
|
|
|
|
var listbk = services.Query<BankerCompany>().ToList();
|
|
|
- //var oclist_1 = oclist;
|
|
|
- //oclist = new List<F_SizeIndexCuring>();
|
|
|
- //lock (oclist_new)
|
|
|
- //{
|
|
|
- // foreach (var item in oclist_1)
|
|
|
- // {
|
|
|
- // F_SizeIndexCuring oc_new = new F_SizeIndexCuring();
|
|
|
- // if (item != null)
|
|
|
- // {
|
|
|
- // oc_new = item;
|
|
|
- // oc_new.BankerCompanyId = listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault().Id;
|
|
|
- // oclist_new.Add(oc_new);
|
|
|
-
|
|
|
- // }
|
|
|
- // }
|
|
|
- //}
|
|
|
-
|
|
|
+ Thread.Sleep(1000);
|
|
|
var oclist_1 = oclist;
|
|
|
oclist = new List<F_SizeIndexCuring>();
|
|
|
for (int i = 0; i < oclist_1.Count; i++)
|
|
|
{
|
|
|
lock (oclist_1)
|
|
|
{
|
|
|
- F_SizeIndexCuring oc_new = new F_SizeIndexCuring();
|
|
|
- if (i < oclist_1.Count)
|
|
|
+ if (oclist_1[i] != null)
|
|
|
{
|
|
|
- oc_new = oclist_1[i];
|
|
|
- lock (listbk)
|
|
|
- {
|
|
|
- oc_new.BankerCompanyId = listbk.Where(a => a.Name == oclist_1[i].BankerCompanyId).FirstOrDefault().Id;
|
|
|
- }
|
|
|
- lock (oclist_new)
|
|
|
+ F_SizeIndexCuring oc_new = new F_SizeIndexCuring();
|
|
|
+ if (i < oclist_1.Count)
|
|
|
{
|
|
|
- oclist_new.Add(oc_new);
|
|
|
+ oc_new = oclist_1[i];
|
|
|
+ lock (listbk)
|
|
|
+ {
|
|
|
+ oc_new.BankerCompanyId = listbk.Where(a => a.Name == oclist_1[i].BankerCompanyId).FirstOrDefault() == null ? "" : listbk.Where(a => a.Name == oclist_1[i].BankerCompanyId).FirstOrDefault().Id;
|
|
|
+ //oc_new.BankerCompanyId = listbk.Where(a => a.Name == oclist_1[i].BankerCompanyId).FirstOrDefault().Id;
|
|
|
+ }
|
|
|
+ lock (oclist_new)
|
|
|
+ {
|
|
|
+ oclist_new.Add(oc_new);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
- //finishcount = 0;
|
|
|
- //threadCount = oclist.Count;
|
|
|
- //oclist.ForEach(async p =>
|
|
|
- //{
|
|
|
- // await Task.Run(() =>
|
|
|
- // {
|
|
|
- // // Trace.WriteLine("更换公司Id:");
|
|
|
- // F_SizeIndexCuring oc_new = new F_SizeIndexCuring();
|
|
|
- // if (p != null)
|
|
|
- // {
|
|
|
- // oc_new = p;
|
|
|
- // oc_new.BankerCompanyId = listbk.Where(a => a.Name == p.BankerCompanyId).FirstOrDefault().Id;
|
|
|
- // oclist_new.Add(oc_new);
|
|
|
- // }
|
|
|
-
|
|
|
- // });
|
|
|
- // lock (locker)
|
|
|
- // {
|
|
|
- // finishcount++;
|
|
|
- // Monitor.Pulse(locker); //完成,通知等待队列,告知已完,执行下一个。
|
|
|
- // }
|
|
|
- //});
|
|
|
- //lock (locker)
|
|
|
- //{
|
|
|
- // while (finishcount != threadCount)
|
|
|
- // {
|
|
|
- // Thread.Sleep(5000);
|
|
|
- // Monitor.Wait(locker);//等待
|
|
|
- // }
|
|
|
- //}
|
|
|
+
|
|
|
var csalist_1 = csalist;
|
|
|
+ csalist_1 = csalist_1.Where(a => a != null).ToList();
|
|
|
csalist = new List<F_SizeIndex>();
|
|
|
foreach (var item in csalist_1)
|
|
|
{
|
|
@@ -208,50 +178,18 @@ namespace FCS.Crawler.ZCLotterySizeIndex
|
|
|
|
|
|
lock (listbk)
|
|
|
{
|
|
|
- cp.BankerCompanyId = listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault().Id;
|
|
|
+ cp.BankerCompanyId = listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault() == null ? "" : listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault().Id;
|
|
|
+ //cp.BankerCompanyId = listbk.Where(a => a.Name == item.BankerCompanyId).FirstOrDefault().Id;
|
|
|
}
|
|
|
lock (oclist_new)
|
|
|
{
|
|
|
csalist_new.Add(cp);
|
|
|
}
|
|
|
}
|
|
|
- //finishcount = 0;
|
|
|
- //threadCount = csalist.Count;
|
|
|
- //csalist.ForEach(async p =>
|
|
|
- //{
|
|
|
- // await Task.Run(() =>
|
|
|
- // {
|
|
|
- // if (p != null)
|
|
|
- // {
|
|
|
- // lock (csalist_new)
|
|
|
- // {
|
|
|
- // // Trace.WriteLine("更换公司Id:" + csalist.IndexOf(p));
|
|
|
- // F_SizeIndex cp = new F_SizeIndex();
|
|
|
- // cp = p;
|
|
|
- // cp.BankerCompanyId = listbk.Where(a => a.Name == p.BankerCompanyId).FirstOrDefault().Id;
|
|
|
- // // Getbjop(p.Remark, p);
|
|
|
- // csalist_new.Add(cp);
|
|
|
-
|
|
|
- // }
|
|
|
-
|
|
|
- // }
|
|
|
-
|
|
|
- // });
|
|
|
- // lock (locker)
|
|
|
- // {
|
|
|
- // finishcount++;
|
|
|
- // Monitor.Pulse(locker); //完成,通知等待队列,告知已完,执行下一个。
|
|
|
- // }
|
|
|
- //});
|
|
|
- //lock (locker)
|
|
|
- //{
|
|
|
- // while (finishcount != threadCount)
|
|
|
- // {
|
|
|
- // Thread.Sleep(5000);
|
|
|
- // Monitor.Wait(locker);//等待
|
|
|
- // }
|
|
|
- //}
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ {
|
|
|
List<F_CuringAnalysis> calist1 = calist.Where((x, i) => calist.FindIndex(z => z.GameId == x.GameId && z.CuringAnalysisType == x.CuringAnalysisType) == i).ToList();//Lambda表达式去重
|
|
|
|
|
|
|
|
@@ -259,15 +197,46 @@ namespace FCS.Crawler.ZCLotterySizeIndex
|
|
|
CommonHelper.Write(ConfigurationManager.AppSettings["SizeIndexJob"], "插入大小固化数据 开始:" + oclist_new.Count);
|
|
|
if (oclist_new.Count > 0)
|
|
|
services.SqlBulkCopyAdd(oclist_new);
|
|
|
- Trace.WriteLine("插入大小详情数据 开始:" + csalist_new.Count);
|
|
|
- CommonHelper.Write(ConfigurationManager.AppSettings["SizeIndexJob"], "插入大小详情数据 开始:" + csalist_new.Count);
|
|
|
- if (csalist_new.Count > 0)
|
|
|
- services.SqlBulkCopyAdd(csalist_new);
|
|
|
+ //Trace.WriteLine("插入大小详情数据 开始:" + csalist_new.Count);
|
|
|
+ //CommonHelper.Write(ConfigurationManager.AppSettings["SizeIndexJob"], "插入大小详情数据 开始:" + csalist_new.Count);
|
|
|
+ //if (csalist_new.Count > 0)
|
|
|
+ // services.SqlBulkCopyAdd(csalist_new);
|
|
|
Trace.WriteLine("插入固化分析数据 开始:" + calist1.Count);
|
|
|
CommonHelper.Write(ConfigurationManager.AppSettings["SizeIndexJob"], "插入固化分析数据 开始:" + calist1.Count);
|
|
|
if (calist1.Count > 0)
|
|
|
services.SqlBulkCopyAdd(calist1);
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ var list_com = new List<F_SizeIndex>();
|
|
|
+ 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<F_SizeIndex> intlist = new List<F_SizeIndex>();
|
|
|
+ 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);
|
|
|
+ CommonHelper.Write(ConfigurationManager.AppSettings["SizeIndexJob"], "插入大小详情数据 开始:" + list_com.Count);
|
|
|
+ if (csalist_new.Count != 0)
|
|
|
+ services.SqlBulkCopyAdd(list_com);
|
|
|
+
|
|
|
urllist = new List<string>();
|
|
|
urllist1 = new List<string>();
|
|
|
Companylist = new List<string>();//所有公司
|
|
@@ -282,21 +251,40 @@ namespace FCS.Crawler.ZCLotterySizeIndex
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
Trace.WriteLine("删除数据 F_CuringAnalysis 开始:" + listAnalysisint.Count);
|
|
|
if (listAnalysisint.Count > 0)
|
|
|
services.Delete<F_CuringAnalysis>(" and PK in (" + string.Join(",", listAnalysisint) + ")");
|
|
|
Trace.WriteLine("删除数据 F_CuringAnalysis 结束:" + listAnalysisint.Count);
|
|
|
|
|
|
Trace.WriteLine("删除数据 F_SizeIndex 开始:" + listDetailint.Count);
|
|
|
+ //if (listDetailint.Count > 0)
|
|
|
+ // services.Delete<F_SizeIndex>(" and PK in (" + string.Join(",", listDetailint) + ")");
|
|
|
if (listDetailint.Count > 0)
|
|
|
- services.Delete<F_SizeIndex>(" and PK in (" + string.Join(",", listDetailint) + ")");
|
|
|
+ {
|
|
|
+ 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<F_SizeIndex>(" and PK in (" + string.Join(",", listDetailint1) + ")");
|
|
|
+ Trace.WriteLine("删除数据 F_SizeIndex 结束中:" + listDetailint1.Count);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ services.Delete<F_SizeIndex>(" and PK in (" + string.Join(",", listCuringint) + ")");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
Trace.WriteLine("删除数据 F_SizeIndex 结束:" + listDetailint.Count);
|
|
|
|
|
|
Trace.WriteLine("删除数据 F_SizeIndexCuring 开始:" + listCuringint.Count);
|
|
|
if (listCuringint.Count > 0)
|
|
|
services.Delete<F_SizeIndexCuring>(" and PK in (" + string.Join(",", listCuringint) + ")");
|
|
|
Trace.WriteLine("删除数据 F_SizeIndexCuring 结束:" + listCuringint.Count);
|
|
|
+ Gamelistq = new List<F_Games>();
|
|
|
+ teamlist = new List<F_Team>();
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
@@ -532,59 +520,68 @@ namespace FCS.Crawler.ZCLotterySizeIndex
|
|
|
if (bjopHtml == null)
|
|
|
return;
|
|
|
|
|
|
+ string HomeTeamName = "";
|
|
|
|
|
|
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)
|
|
|
+ if (homenameHtml != null)
|
|
|
{
|
|
|
- HomeTeamName = q1.Name;
|
|
|
- HtmlNodeCollection homepmHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-zd']");
|
|
|
- if (homepmHtml[0].InnerText.Trim().Contains("上赛季排名"))
|
|
|
+ var q1 = teamlist.Where(a => a.Name == homenameHtml[0].InnerText.Trim()).FirstOrDefault();
|
|
|
+ string data = "";
|
|
|
+ if (q1 != null)
|
|
|
{
|
|
|
- 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("分", "");
|
|
|
+ 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
|
|
|
- {
|
|
|
+ }
|
|
|
+ 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("积分", "");
|
|
|
+ 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);
|
|
|
}
|
|
|
- InsertSeasonAnalysis(data, q1.Id, url, game.Season);
|
|
|
}
|
|
|
+ string VisitingTeamName = "";
|
|
|
|
|
|
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)
|
|
|
+ if (visitingnameHtml != null)
|
|
|
{
|
|
|
- VisitingTeamName = q2.Name;
|
|
|
- HtmlNodeCollection homepmkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-kd']");
|
|
|
+ string data = "";
|
|
|
|
|
|
- if (homepmkHtml[0].InnerText.Trim().Contains("上赛季排名"))
|
|
|
+ var q2 = teamlist.Where(a => a.Name == visitingnameHtml[0].InnerText.Trim()).FirstOrDefault();
|
|
|
+ if (q2 != null)
|
|
|
{
|
|
|
- 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("分", "");
|
|
|
+ VisitingTeamName = q2.Name;
|
|
|
+ HtmlNodeCollection homepmkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-kd']");
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
+ 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("分", "");
|
|
|
|
|
|
- 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("积分", "");
|
|
|
+ }
|
|
|
+ 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);
|
|
|
}
|
|
|
- InsertSeasonAnalysis(data, q2.Id, url, game.Season);
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
List<string> listdetail = new List<string>();
|
|
|
foreach (var item in bjopHtml)
|
|
|
{
|
|
@@ -760,6 +757,8 @@ namespace FCS.Crawler.ZCLotterySizeIndex
|
|
|
}
|
|
|
foreach (var item in Companylist)
|
|
|
{
|
|
|
+ if (item.IsEmpty())
|
|
|
+ continue;
|
|
|
var query = item.Split('|');
|
|
|
if (listbk.Where(a => a.Name == query[0]).ToList().Count > 0)
|
|
|
{
|
|
@@ -1033,186 +1032,171 @@ namespace FCS.Crawler.ZCLotterySizeIndex
|
|
|
|
|
|
public void Getbjop_new(string url, F_Games game)
|
|
|
{
|
|
|
- url = url.Replace(":80", "").Replace("ypdb", "dxdb");
|
|
|
- string jsonall = CommonHelper.GetHtmlString(url.Replace("fenxi.zgzcw.com", "fenxi.zgzcw.com/json"), "", 20 * 1000);
|
|
|
- var htmlResource = CommonHelper.GetHtmlString(url, "", 20* 1000);
|
|
|
- HtmlDocument doc = new HtmlDocument();
|
|
|
- if (htmlResource == null)
|
|
|
- return;
|
|
|
- if (htmlResource == ConfigurationManager.AppSettings["HttpException"].ToString())
|
|
|
- return;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ url = url.Replace(":80", "").Replace("ypdb", "dxdb");
|
|
|
+ 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);
|
|
|
+ doc.LoadHtml(htmlResource);
|
|
|
|
|
|
- //赔率集合
|
|
|
- HtmlNodeCollection bjopHtml = doc.DocumentNode.SelectNodes("//*[@class='bf-tab-02']/tr");
|
|
|
- if (bjopHtml == null)
|
|
|
- return;
|
|
|
+ //赔率集合
|
|
|
+ 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("上赛季排名"))
|
|
|
+ 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)
|
|
|
{
|
|
|
- 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("分", "");
|
|
|
+ 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
|
|
|
- {
|
|
|
+ }
|
|
|
+ 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("积分", "");
|
|
|
+ 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);
|
|
|
}
|
|
|
- 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("上赛季排名"))
|
|
|
+ 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)
|
|
|
{
|
|
|
- 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("分", "");
|
|
|
+ VisitingTeamName = q2.Name;
|
|
|
+ HtmlNodeCollection homepmkHtml = doc.DocumentNode.SelectNodes("//*[@class='team-add-info-kd']");
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
+ 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("分", "");
|
|
|
|
|
|
- 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);
|
|
|
- }
|
|
|
+ }
|
|
|
+ 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<string> listdetail = new List<string>();
|
|
|
- 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)
|
|
|
+ List<string> listdetail = new List<string>();
|
|
|
+ foreach (var item in bjopHtml)
|
|
|
{
|
|
|
- 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 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)
|
|
|
{
|
|
|
- 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)
|
|
|
+ if (i == 2)
|
|
|
+ {
|
|
|
+ // shuju += item1.InnerText.Trim()+"|";
|
|
|
+ Companylist.Add(item1.InnerText.Trim() + "|" + item1.Attributes["data"].Value);
|
|
|
+ // Companylist = Companylist.Distinct().ToList();
|
|
|
+ // InsertBankerCompany();
|
|
|
+ }
|
|
|
+ if (i == 6)
|
|
|
{
|
|
|
- Hours = datestring.Split('|')[0];
|
|
|
- Minute = datestring.Split('|')[1];
|
|
|
+ shuju += item1.InnerText.Trim() + "|";
|
|
|
+ nurl = item1.SelectNodes("//a")[0].Attributes["href"].Value.Trim();
|
|
|
}
|
|
|
- else if (datestring.Split('|').Length == 1)
|
|
|
+ else if (i == 9)
|
|
|
{
|
|
|
- Hours = "0";
|
|
|
- Minute = datestring.Split('|')[0];
|
|
|
+ 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);
|
|
|
}
|
|
|
- int Minutes = Minute.TryToInt32() + Hours.TryToInt32() * 60;
|
|
|
- lasttime = Convert.ToDateTime(game.StartDateTime).AddMinutes(-Minutes);
|
|
|
+ else
|
|
|
+ {
|
|
|
+ shuju += item1.InnerText.Trim() + "|";
|
|
|
+ }
|
|
|
+ i++;
|
|
|
}
|
|
|
- else
|
|
|
+ DateTime lastdate = lasttime;
|
|
|
+ DateTime date = Convert.ToDateTime(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"));
|
|
|
+ // if (lastdate > date)
|
|
|
{
|
|
|
- shuju += item1.InnerText.Trim() + "|";
|
|
|
+ listdetail.Add(shuju + "@" + nurl + "@" + lasttime);
|
|
|
}
|
|
|
- i++;
|
|
|
- }
|
|
|
- DateTime lastdate = lasttime;
|
|
|
- DateTime date = Convert.ToDateTime(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd"));
|
|
|
- // if (lastdate > date)
|
|
|
- {
|
|
|
- listdetail.Add(shuju + "@" + nurl + "@" + lasttime);
|
|
|
+ //listdetail.Add(shuju + "@" + nurl);
|
|
|
}
|
|
|
- //listdetail.Add(shuju + "@" + nurl);
|
|
|
- }
|
|
|
- int num = 0, max = listdetail.Count;
|
|
|
- listdetail.ForEach(async p =>
|
|
|
- {
|
|
|
- await Task.Run(() =>
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- var lis = p.Split('@')[0];
|
|
|
- //Trace.WriteLine("大小分析多线程 开始:" + listdetail.IndexOf(p));
|
|
|
- InsertOddsCuring_new(p.Split('@')[0], game.Id, p.Split('@')[1], game.StartDateTime.TryToDateTime(), game.HomeTeamId, game.VisitingTeamId, HomeTeamName, VisitingTeamName, jsonall, Convert.ToDateTime(p.Split('@')[2]));
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
-
|
|
|
- Trace.WriteLine("大小分析多线程 报错:" + listdetail.IndexOf(p));
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
- });
|
|
|
- lock (locker)
|
|
|
+ foreach (var item in listdetail)
|
|
|
{
|
|
|
- num++;
|
|
|
- Monitor.Pulse(locker); //完成,通知等待队列,告知已完,执行下一个。
|
|
|
+ var lis = item.Split('@')[0];
|
|
|
+ //Trace.WriteLine("大小分析多线程 开始:" + listdetail.IndexOf(p));
|
|
|
+ InsertOddsCuring_new(item.Split('@')[0], game.Id, item.Split('@')[1], game.StartDateTime.TryToDateTime(), game.HomeTeamId, game.VisitingTeamId, HomeTeamName, VisitingTeamName, jsonall, Convert.ToDateTime(item.Split('@')[2]));
|
|
|
}
|
|
|
- });
|
|
|
- lock (locker)
|
|
|
+
|
|
|
+ //class="bf-tab-03"
|
|
|
+ HtmlNodeCollection bjopfxHtml = doc.DocumentNode.SelectNodes("//*[@class='bf-tab-03']/tr");
|
|
|
+ if (bjopfxHtml == null)
|
|
|
+ return;
|
|
|
+ foreach (var item in bjopfxHtml)
|
|
|
{
|
|
|
- while (num != max)
|
|
|
+ HtmlDocument doc1 = new HtmlDocument();
|
|
|
+ doc1.LoadHtml(item.InnerHtml);
|
|
|
+ HtmlNodeCollection bjopfxtdHtml = doc1.DocumentNode.SelectNodes("//td");
|
|
|
+ if (bjopfxtdHtml.Count == 15)
|
|
|
{
|
|
|
- Thread.Sleep(5000);
|
|
|
- Monitor.Wait(locker);//等待
|
|
|
+ string shuju = "";
|
|
|
+ foreach (var item1 in bjopfxtdHtml)
|
|
|
+ {
|
|
|
+ shuju += item1.InnerText.Trim() + "|";
|
|
|
+ }
|
|
|
+ InsertCuringAnalysis(shuju, game.Id, url);
|
|
|
}
|
|
|
}
|
|
|
- //class="bf-tab-03"
|
|
|
- HtmlNodeCollection bjopfxHtml = doc.DocumentNode.SelectNodes("//*[@class='bf-tab-03']/tr");
|
|
|
- foreach (var item in bjopfxHtml)
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
{
|
|
|
- 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_new(string url, F_SizeIndexCuring oc, string date)
|
|
|
{
|