public IEnumerable<Team> GetRoster() { const string rosterUrl = "http://breakawaysports.info/sports/inline-hockey/#inline-roster"; const int numberOfTeams = 8; const int numberOfColumns = 4; var tableData = HtmlParser.GetTableHtmlList(rosterUrl, "table").FirstOrDefault(); var elements = _parser.GetElementList(tableData); var list = new List<Element>(); for (var l = 0; l <= elements.Count / 2 + numberOfColumns; l += elements.Count / 2 + numberOfColumns) { for (var j = 0; j < numberOfTeams / 2; j++) { var newList = new Element[elements.Count / numberOfTeams]; for (var i = 0; i < elements.Count / numberOfTeams; i++) { var k = ((i * numberOfColumns) + j) + l; if (k >= elements.Count) newList[i] = new Element { Directive = "td", Data = string.Empty }; else newList[i] = elements[k]; if (i < 1) newList[i].Directive = "th"; } list = list.Concat(newList.ToList()).ToList(); } } var data = list.Select((e, i) => new { Index = i, Value = e }).GroupBy(anon => anon.Index / 12) .Select(g => new Team { Name = g.FirstOrDefault(anon => anon.Value.Directive == "th")?.Value.Data, Players = g.Where(anon => anon.Value.Directive == "td" && anon.Value.Data.Length > 1).Select(anon => new Player { FirstName = GetFirstName(anon.Value.Data), LastName = GetLastName(anon.Value.Data), Positions = GetPosition(anon.Value.Data) }).ToList() }).ToList(); var tempPlayers = data.SelectMany(t => t.Players.Where(p => p.LastName.ToLower() == "diprima").ToList()).ToList(); foreach (var player in tempPlayers) { player.FirstName = "Keith"; } return data; }
public void GetGamesOverview(string gameUrl) { var tableData = HtmlParser.GetTableHtmlList(gameUrl, "table").Skip(1).FirstOrDefault(); var elements = _parser.GetElementList(tableData).Where(e => e.Directive != null).ToList(); var headersCount = elements.Count(e => e.Directive == "th"); for (var i = 10; i < elements.Count; i += headersCount) { var dummyElement = new Element { Directive = "dummy", Data = "dummy" }; elements.Insert(i, dummyElement); elements[i + 1].Data = elements[i + 1].Attributes.FirstOrDefault(e => e.Directive == "href").Data; } var gameOverviews = _parser.GetFinalObject<GameOverviewModel>(elements); var gameInfoList = new List<GameModel>(); foreach (var gameOverview in gameOverviews) { var gameInfo = GetGameInfo(gameOverview.Status, gameOverview.Home, gameOverview.Visitor); gameInfoList.Add(gameInfo); } }