| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311 |
- 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 Quartz;
- namespace FCS.Crawler.PlayersGameData
- {
- class PlayersGameDataJob : CommonJob, IJob
- {
- public PlayersGameDataJob()
- {
- log = new LogHelper();
- services = IOC.Resolve<IDTOpenCode>();
- }
- public void Execute(IJobExecutionContext context)
- {
- //Config = CommonHelper.GetConfigFromDataMap(context.JobDetail.JobDataMap);
- // Click();
- }
- /// <summary>
- /// 跟新服务
- /// </summary>
- public void Click()
- {
- playerslist = services.Query<F_Players>().ToList();
- teamlist = services.Query<F_Team>().ToList();
- eventlist = services.Query<F_Events>().ToList();
- int num = 0;
- int max = playerslist.Count;
- playerslist.ForEach(async p =>
- {
- await Task.Run(() =>
- {
- Trace.WriteLine("获取球员数据 开始:" + playerslist.IndexOf(p));
- Getbjop(p.Remark, p.Id);
- });
- lock (g)
- {
- num++;
- Monitor.Pulse(g); //完成,通知等待队列,告知已完,执行下一个。
- }
- });
- lock (g)
- {
- while (num != max)
- {
- Monitor.Wait(g);//等待
- }
- }
- num = 0;
- max = GameData.Count;
- GameData.ForEach(async p =>
- {
- await Task.Run(() =>
- {
- Trace.WriteLine("更换Id 开始:" + GameData.IndexOf(p));
- F_PlayersGameData pd = new F_PlayersGameData();
- pd = p;
- var events = eventlist.Where(a => a.Name.Trim() == p.EventName).FirstOrDefault();
- pd.EventId = events == null ? "" : events.Id;
- var team = teamlist.Where(a => a.Name.Trim() == p.HomeTeamName).FirstOrDefault();
- pd.HomeTeamId = team == null ? "" : team.Id;
- team = teamlist.Where(a => a.Name.Trim() == p.VisitingTeamName).FirstOrDefault();
- pd.VisitingTeamId = team == null ? "" : team.Id;
- lock (GameData_New)
- {
- GameData_New.Add(p);
- }
- });
- lock (g)
- {
- num++;
- Monitor.Pulse(g); //完成,通知等待队列,告知已完,执行下一个。
- }
- });
- lock (g)
- {
- while (num != max)
- {
- Monitor.Wait(g);//等待
- }
- }
- var sss = Convert.ToDateTime(DateTime.Now.ToShortDateString());
- //只插入当前天数的球员比赛数据
- GameData_New = GameData_New.Where(a => a.RaceTime > Convert.ToDateTime(DateTime.Now.AddDays(-30).ToShortDateString())).ToList();
- Trace.WriteLine("插入球员记录数据 开始:" + GameData_New.Count);
- if (GameData_New.Count > 0)
- services.SqlBulkCopyAdd(GameData_New);
- }
- F_PlayersGameData g = new F_PlayersGameData();
- public void DoMainUrl()
- {
- playerslist = services.Query<F_Players>().Take(70000).ToList();
- teamlist = services.Query<F_Team>().ToList();
- eventlist= services.Query<F_Events>().ToList();
- int num = 0;
- int max = playerslist.Count;
- playerslist.ForEach(async p =>
- {
- await Task.Run(() =>
- {
- Trace.WriteLine("获取球员数据 开始:" + playerslist.IndexOf(p));
- Getbjop(p.Remark,p.Id);
- });
- lock (g)
- {
- num++;
- Monitor.Pulse(g); //完成,通知等待队列,告知已完,执行下一个。
- }
- });
- lock (g)
- {
- while (num != max)
- {
- Monitor.Wait(g);//等待
- }
- }
- num = 0;
- max = GameData.Count;
- GameData.ForEach(async p =>
- {
- await Task.Run(() =>
- {
- Trace.WriteLine("更换Id 开始:" + GameData.IndexOf(p));
- F_PlayersGameData pd = new F_PlayersGameData();
- pd = p;
- var events = eventlist.Where(a => a.Name.Trim() == p.EventName).FirstOrDefault();
- pd.EventId = events==null?"": events.Id;
- var team = teamlist.Where(a => a.Name.Trim() == p.HomeTeamName).FirstOrDefault();
- pd.HomeTeamId = team == null ? "" : team.Id;
- team = teamlist.Where(a => a.Name.Trim() == p.VisitingTeamName).FirstOrDefault();
- pd.VisitingTeamId = team == null ? "" : team.Id;
- lock (GameData_New)
- {
- GameData_New.Add(p);
- }
-
- });
- lock (g)
- {
- num++;
- Monitor.Pulse(g); //完成,通知等待队列,告知已完,执行下一个。
- }
- });
- lock (g)
- {
- while (num != max)
- {
- Monitor.Wait(g);//等待
- }
- }
- Trace.WriteLine("插入球员记录数据 开始:" + GameData_New.Count);
- if (GameData_New.Count > 0)
- services.SqlBulkCopyAdd(GameData_New);
- DoMainUrl1();
- }
- public void DoMainUrl1()
- {
- GameData_New = new List<F_PlayersGameData>();
- playerslist = services.Query<F_Players>().Skip(70000).ToList();
- int num = 0;
- int max = playerslist.Count;
- playerslist.ForEach(async p =>
- {
- await Task.Run(() =>
- {
- Trace.WriteLine("获取球员数据 开始:" + playerslist.IndexOf(p));
- Getbjop(p.Remark, p.Id);
- });
- lock (g)
- {
- num++;
- Monitor.Pulse(g); //完成,通知等待队列,告知已完,执行下一个。
- }
- });
- lock (g)
- {
- while (num != max)
- {
- Monitor.Wait(g);//等待
- }
- }
- num = 0;
- max = GameData.Count;
- GameData.ForEach(async p =>
- {
- await Task.Run(() =>
- {
- Trace.WriteLine("更换Id 开始:" + GameData.IndexOf(p));
- F_PlayersGameData pd = new F_PlayersGameData();
- pd = p;
- var events = eventlist.Where(a => a.Name.Trim() == p.EventName).FirstOrDefault();
- pd.EventId = events == null ? "" : events.Id;
- var team = teamlist.Where(a => a.Name.Trim() == p.HomeTeamName).FirstOrDefault();
- pd.HomeTeamId = team == null ? "" : team.Id;
- team = teamlist.Where(a => a.Name.Trim() == p.VisitingTeamName).FirstOrDefault();
- pd.VisitingTeamId = team == null ? "" : team.Id;
- lock (GameData_New)
- {
- GameData_New.Add(p);
- }
- });
- lock (g)
- {
- num++;
- Monitor.Pulse(g); //完成,通知等待队列,告知已完,执行下一个。
- }
- });
- lock (g)
- {
- while (num != max)
- {
- Monitor.Wait(g);//等待
- }
- }
- Trace.WriteLine("插入球员记录数据 开始:" + GameData_New.Count);
- if (GameData_New.Count > 0)
- services.SqlBulkCopyAdd(GameData_New);
- }
- public static List<F_PlayersGameData> GameData = new List<F_PlayersGameData>();
- public static List<F_PlayersGameData> GameData_New = new List<F_PlayersGameData>();
- public static List<F_Players> playerslist = new List<F_Players>();
- public static List<F_Team> teamlist = new List<F_Team>();
- public static List<F_Events> eventlist = new List<F_Events>();
- public void Getbjop(string url,string Id)
- {
- url = url.Replace(":80", "");
- var htmlResource = CommonHelper.GetHtmlString(url, "足彩");
- HtmlDocument doc = new HtmlDocument();
- if (htmlResource == null)
- return;
- doc.LoadHtml(htmlResource);
- //球员集合
- HtmlNodeCollection sjHtml = doc.DocumentNode.SelectNodes("//*[@class='zstab']/tr");
- if (sjHtml == null)
- return;
- for (int i = 0; i < sjHtml.Count; i++)
- {
- if (i == 0 || i == sjHtml.Count - 1)
- continue;
- string p = sjHtml[i].InnerHtml;
- HtmlDocument doc1 = new HtmlDocument();
- doc1.LoadHtml(p);
- try
- {
- HtmlNodeCollection Htmltd = doc.DocumentNode.SelectNodes("//td");
- if (Htmltd == null)
- return;
- F_PlayersGameData data = new F_PlayersGameData();
- data.Id = CommonHelper.GetGuid();
- data.EventName = Htmltd[0].InnerText.Trim();
- data.EventId = Htmltd[0].InnerText.Trim();
- data.RaceTime = Convert.ToDateTime(Htmltd[1].InnerText.Trim());
- data.HomeTeamName = Htmltd[2].InnerText.Trim();
- data.VisitingTeamName = Htmltd[4].InnerText.Trim();
- data.HomeTeamId = Htmltd[2].InnerText.Trim();
- data.VisitingTeamId = Htmltd[4].InnerText.Trim();
- data.Score = Htmltd[3].InnerText.Trim();
- data.Goal = Convert.ToInt32(Htmltd[5].InnerText.Trim());
- data.PenaltyKick = Convert.ToInt32(Htmltd[6].InnerText.Trim());
- data.Oolong = Convert.ToInt32(Htmltd[7].InnerText.Trim());
- data.YellowCard = Convert.ToInt32(Htmltd[8].InnerText.Trim());
- data.RedCard = Convert.ToInt32(Htmltd[9].InnerText.Trim());
- data.Remark = url;
- data.PlayersId = Id;
- data.CreateDateTime = DateTime.Now;
- Insert(data);
- }
- catch (Exception e)
- {
- continue;
- }
-
- }
- }
-
- /// <summary>
- /// 插入数据
- /// </summary>
- /// <param name="data"></param>
- /// <param name="Id"></param>
- /// <param name="Season"></param>
- public void Insert(F_PlayersGameData data)
- {
- lock (GameData)
- {
- GameData.Add(data);
- }
- }
-
- }
- }
|