Exemplo n.º 1
0
        private List <AdDtoModel> ParseAdsFromPage_Rent(HtmlDocument html, EnumTypeItems typeItem)
        {
            var rows   = ParseAdsFromPage_GetRows(html, typeItem);
            var result = ParseAdsFromPage_ParseRows(rows, typeItem);

            return(result);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
                }
            }
        }
Exemplo n.º 7
0
        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);
        }