private List <AdDtoModel> ParseAdsFromPage_Rent(HtmlDocument html, EnumTypeItems typeItem) { var rows = ParseAdsFromPage_GetRows(html, typeItem); var result = ParseAdsFromPage_ParseRows(rows, typeItem); return(result); }
private List <HtmlNode> ParseAdsFromPage_GetRows(HtmlDocument html, EnumTypeItems typeItem) { var idBlock = ParseAdsFromPage_GetIdBlock(typeItem); var block1 = html.DocumentNode.CssSelect($"#{idBlock}").FirstOrDefault(); var rows = block1.CssSelect("tr").ToList(); return(rows); }
private List <AdDtoModel> ParseAdsFromPage_ParseRows(List <HtmlNode> rows, EnumTypeItems typeItem) { var result = new List <AdDtoModel>(); foreach (var row in rows) { var ad = ParseAdsFromPage_ParseAd(row, typeItem); if (ad != null) { result.Add(ad); } } return(result); }
private string ParseAdsFromPage_GetIdBlock(EnumTypeItems typeItem) { var idBlock = "mainresults"; switch (typeItem) { case EnumTypeItems.Rent: idBlock = "mainresults"; break; case EnumTypeItems.RentTivuch: idBlock = "relatedresults"; break; } return(idBlock); }
private int ParseAdsFromPage_ParseAd_GetPositionDate(EnumTypeItems typeItem) { var result = 0; switch (typeItem) { case EnumTypeItems.Rent: result = 10; break; case EnumTypeItems.RentTivuch: result = 11; break; } return(result); }
private void _scrapeFromPage_Rent(List <AdDtoModel> result, EnumTypeItems typeItem) { var idBlock = "mainresults"; switch (typeItem) { case EnumTypeItems.Rent: idBlock = "mainresults"; break; case EnumTypeItems.RentTivuch: idBlock = "relatedresults"; break; } var data = _selenoidState.WindowMain.FindElementById(idBlock);//board mainresults/relatedresults rent/RentTivuch var rows = data.FindElements(By.TagName("tr")); foreach (var row in rows) { var listTds = row.FindElements(By.TagName("td")); if (listTds.Count > 0 && listTds.FirstOrDefault().GetAttribute("class") == "selectionarea") { var id = row.GetAttribute("id"); var city = listTds.Skip(5).Take(1).FirstOrDefault().Text; //6 var region = listTds.Skip(4).Take(1).FirstOrDefault().Text; //5 var price = listTds.Skip(7).Take(1).FirstOrDefault().Text; //8 var dateUpdated = listTds.Skip(9).Take(1).FirstOrDefault().Text; //10 var item = new AdDtoModel() { TypeItem = typeItem, Id = id.Replace("ad_", ""), City = city, Region = region, Price = price, DateUpdated = dateUpdated, }; result.Add(item); } } }
private AdDtoModel ParseAdsFromPage_ParseAd(HtmlNode row, EnumTypeItems typeItem) { AdDtoModel result = null; var listTds = row.CssSelect("td").ToList(); var attr = listTds?.FirstOrDefault()?.Attributes["class"]?.Value; var positionDate = ParseAdsFromPage_ParseAd_GetPositionDate(typeItem); if (listTds.Count > 0 && attr == "selectionarea") { string id = "", city = "", region = "", price = "", dateUpdated = ""; try { id = row.Attributes["id"].Value.Replace("ad_", ""); city = listTds.Skip(5).Take(1).FirstOrDefault().ChildNodes.FirstOrDefault().InnerHtml; //6 region = listTds.Skip(4).Take(1).FirstOrDefault().InnerHtml; //5 price = listTds.Skip(7).Take(1).FirstOrDefault().InnerHtml; //8 dateUpdated = listTds.Skip(positionDate - 1).Take(1).FirstOrDefault()?.ChildNodes?.FirstOrDefault()?.InnerHtml; //10, revuch=11 }catch (Exception exception) { _log($"Error x4. {exception.Message} / {exception.StackTrace}"); } result = new AdDtoModel() { TypeItem = typeItem, Id = id, City = city, Region = region, Price = price, DateUpdated = dateUpdated, }; } return(result); }