public void ProcessHtml() { var data = new Data(); makes = data.GetMakes(); var htmlList = data.GetAllHtmUnprocessed(); htmlList.Clear(); htmlList = data.GetAllHtmUnprocessed(); var myList = new List<string>(); foreach (var doc in htmlList) { var carId = doc.CarId; var propValue = new List<PropValue>(); var parser = new HtmlParser(); //Just get the DOM representation var document = parser.Parse(doc.html); var postdate = document.All.Where(m => m.LocalName == "time"); if (postdate.Count() > 0) { var date = ((AngleSharp.Dom.Html.IHtmlTimeElement)postdate.First()).DateTime; propValue.Add(new PropValue { Prop = "PostDate", Value = date }); } var attrgroup = document.All.Where(m => m.LocalName == "p" && m.ClassList.Contains("attrgroup")); foreach (var att in attrgroup) { var c = att.GetDeepControlsByType<AngleSharp.Dom.IElement>(); foreach (var elem in c) { if (!string.IsNullOrEmpty(elem.InnerHtml.Trim()) && elem.InnerHtml.Contains("<b>")) { myList.Add(elem.InnerHtml); var ymm = MatchYearMakeModel(elem.InnerHtml); if (ymm != null) { if (!string.IsNullOrEmpty(ymm.Year)) { propValue.Add(item: new PropValue { CarId = carId, Prop = "year", Value = ymm.Year }); } if (!string.IsNullOrEmpty(ymm.Make)) { propValue.Add(item: new PropValue { CarId = carId, Prop = "make", Value = ymm.Make }); } if (!string.IsNullOrEmpty(ymm.Model)) { propValue.Add(item: new PropValue { CarId = carId, Prop = "model", Value = ymm.Model }); } } var propval = MatchPropValue(elem.InnerHtml); propValue.Add(item: new PropValue { CarId = carId, Prop = propval.Prop, Value = propval.Value }); } } } if (propValue.Count > 0) { var car = data.GetCar(doc.CarId); if (car == null) continue; foreach (var pv in propValue) { switch (pv.Prop) { case "PostDate": car.PostDate = DateTimeOffset.Parse(pv.Value).UtcDateTime; break; case "year": car.Year = !string.IsNullOrEmpty(pv.Value.NullIfEmpty()) ? Convert.ToInt16(pv.Value.NullIfEmpty()) : car.Year; break; case "make": car.Make = pv.Value.NullIfEmpty(); break; case "model": car.Model = pv.Value.NullIfEmpty(); break; case "condition": car.Condition = pv.Value.NullIfEmpty(); break; case "drive": car.Drive = pv.Value.NullIfEmpty(); break; case "fuel": car.Fuel = pv.Value.NullIfEmpty(); break; case "paint color": car.Color = pv.Value.NullIfEmpty(); break; case "size": car.Size = pv.Value.NullIfEmpty(); break; case "title status": car.TitleStatus = pv.Value.NullIfEmpty(); break; case "transmission": car.Transmission = pv.Value.NullIfEmpty(); break; case "type": car.Type = pv.Value.NullIfEmpty(); break; case "VID": car.VIN = pv.Value.NullIfEmpty(); break; case "odometer": var miles = !string.IsNullOrEmpty(pv.Value.NullIfEmpty()) ? Convert.ToInt32(pv.Value.NullIfEmpty()) : car.Miles; if (miles != null) if (!car.Miles.ToString().StartsWith(miles.ToString().Trim())) { car.Miles = miles != 0 ? miles : null; } break; } } data.UpdateCars(car); } data.UpdateHtmlSent(doc.CarId); } data.Dispose(); }