public async Task <List <Match> > GetMatchesOfLeague(Leagues league, DateTime DayOfMatch, int minH2H) { logger.Trace($"Начинаю парсинг матчей лиги {league.ToTextString()}."); List <Match> matches = new List <Match>(); driver.Navigate().GoToUrl(league.ToLink()); WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30)) { PollingInterval = TimeSpan.FromMilliseconds(500) }; try { wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.CssSelector("div.event__match"))); } catch (Exception e) { logger.Error($"Матчи в лиге {league} не найдены.\n{e.Message}"); return(matches); } try { wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)) { PollingInterval = TimeSpan.FromMilliseconds(500) }; wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementExists(By.XPath("//*[@id=\"onetrust-accept-btn-handler\"]"))); driver.FindElement(By.XPath("//*[@id=\"onetrust-accept-btn-handler\"]")).Click(); } catch { } foreach (var match in driver.FindElements(By.CssSelector("div.event__match"))) { var timeblock = match.FindElements(By.CssSelector("div.event__time")); if (timeblock.Count == 0) { continue; } var additions = timeblock[0].FindElements(By.CssSelector("div.event__stage--pkv")); if (additions.Count != 0) { continue; } else if (timeblock[0].Text.Contains("Отменен") || timeblock[0].Text.Contains("ТКР")) { continue; } string strDate = $"{DateTime.Now.Year}.{timeblock[0].Text}".ToCorrectDataFormat(); try { if (!DateTime.ParseExact(strDate, "yyyy.dd.MM HH:mm", CultureInfo.InvariantCulture).IfDateSame(DayOfMatch)) { continue; } } catch { continue; } var id = match.GetAttribute("id").Replace("g_25_", "") + "/#h2h"; matches.Add(new Match() { Link = "https://www.flashscore.ru/match/" + id }); } logger.Trace($"Найдено матчей для парсинга {matches.Count}."); Console.Write("\rМатчей проверено 0 / {0} .", matches.Count); var mainWindow = driver.CurrentWindowHandle; for (int i = 0; i < matches.Count; i++) { try { await Parser.FillInfoAboutMatchAsync(matches[i], driver, minH2H); Console.Write("\rМатчей проверено {0} / {1} .", i + 1, matches.Count); } catch (Exception e) { foreach (var h in driver.WindowHandles.Where(h => !h.Equals(mainWindow))) { driver.SwitchTo().Window(h); driver.Close(); } driver.SwitchTo().Window(mainWindow); logger.Error($"Ошибка проверки матча по ссылке {matches[i].Link}.\n {e.Message}"); } } Console.Write("\n"); logger.Trace($"Собрана информация о {matches.Count}-x матчах лиги {league.ToTextString()}."); return(matches); }