public IEnumerable <Car> GetAllCars(ModelSearchDto model, bool newCars) { #if DEBUG Directory.CreateDirectory(@"./CarsBg/" + model.BrandName + "/" + model.Name); #endif CarsBgSearchCriteria carsBgSearchCriteria = new CarsBgSearchCriteria(); carsBgSearchCriteria.AddModel(model); var results = new List <Car>(); logger.LogDebug("Exploring" + model.BrandName + " " + model.Name); while (true) { // CarsBg bugs and displays the 50 page for any page after 50 if (carsBgSearchCriteria.Page > 50) { break; } var url = carsBgSearchCriteria.ToString(); WebPage carsPage = browser.NavigateToPage(new Uri(url)); HtmlNodeCollection links = carsPage.Html.SelectNodes("//table[@class='tableListResults']//tr[contains(@class, 'odd') or contains(@class, 'even')]/td[2]/a"); if (links == null || links.Count == 0) { break; } foreach (HtmlNode link in links) { string href = link.GetAttributeValue("href"); string adUrl = $"https://www.cars.bg/{href}"; if (!existingCars.Contains(adUrl) && existingCars.Add(adUrl)) { logger.LogDebug("Processing:" + adUrl); Car car = GetCar(model, adUrl); results.Add(car); } else if (newCars) { return(results); } } carsBgSearchCriteria.Page++; logger.LogDebug("Exploring page number:" + carsBgSearchCriteria.Page); } return(results); }