/// <summary>
        /// Parsea el HTML de respuesta para construir la lista de objetos
        /// resultado.
        /// </summary>
        /// <param name="document">El HTML de respuesta de ML.</param>
        /// <returns>Lista de objetos resultado.</returns>
        protected virtual List <ICApiSearchResult> Parse(AngleSharp.Dom.IDocument document)
        {
            List <ICApiSearchResult> results = new List <ICApiSearchResult>();

            foreach (var item in document.QuerySelectorAll(".mainContentListado .propiedades-slider"))
            {
                string       title        = item.QuerySelector("a.holder-link").GetAttribute("title").Trim();
                string       description  = item.QuerySelector(".descriptionProp p, .textoDesc")?.InnerHtml?.Trim();
                string       itemURL      = item.QuerySelector("a.holder-link").GetAttribute("href");
                string       imageURL     = item.QuerySelector(".imagen img").GetAttribute("src");
                PropertyType propertyType = PropertyTypeExtensions.FromString(item.QuerySelector(".tipo-propiedad").InnerHtml.Trim()).Value;

                string price = item.QuerySelector(".precio").InnerHtml;
                if (price.IndexOf('<') >= 0)
                {
                    price = price.Substring(0, price.IndexOf('<')).Trim();
                }

                string expenses = item.QuerySelector(".gastos_comunes")?.InnerHtml?.Replace("+", "")?.Trim();

                results.Add(new ICApiSearchResult(title, description, price, expenses, imageURL, itemURL, propertyType));
            }

            return(results);
        }
Exemple #2
0
        private async Task <AngleSharp.Dom.IDocument> GetDoc(string _address) // можно только через асинхронную функции, иначе просто никак
        {
            // конфигурация
            var config = Configuration.Default.WithDefaultLoader();
            // адрес запроса
            string address = _address;

            // Весь HTML код. Можно использовать var
            AngleSharp.Dom.IDocument doc = await BrowsingContext.New(config).OpenAsync(address);

            // возвращаем HTML файл всего сайта
            return(doc);
        }
Exemple #3
0
        /// <summary>
        /// Parsea el HTML de respuesta para construir la lista de objetos
        /// resultado.
        /// </summary>
        /// <param name="document">El HTML de respuesta de ML.</param>
        /// <returns>Lista de objetos resultado.</returns>
        protected virtual List <string> ParseTendencias(AngleSharp.Dom.IDocument document)
        {
            List <string> results = new List <string>();

            foreach (var item in document.QuerySelectorAll("li.searches__item"))
            {
                try
                {
                    string title = item.QuerySelector("a").InnerHtml.Trim();
                    results.Add(title);
                }
                catch (NullReferenceException) { }
            }

            return(results);
        }
Exemple #4
0
        /// <summary>
        /// Parsea el HTML de respuesta para construir la lista de objetos
        /// resultado.
        /// </summary>
        /// <param name="document">El HTML de respuesta de ML.</param>
        /// <returns>Lista de objetos resultado.</returns>
        protected virtual List <MLApiSearchResult> Parse(AngleSharp.Dom.IDocument document)
        {
            List <MLApiSearchResult> results = new List <MLApiSearchResult>();

            foreach (var item in document.QuerySelectorAll("#searchResults li.results-item"))
            {
                try
                {
                    string title    = item.QuerySelector(".item__title span.main-title").InnerHtml.Trim();
                    string price    = item.QuerySelector(".item__price > .price__fraction").InnerHtml.Trim();
                    string currency = item.QuerySelector(".item__price > .price__symbol").InnerHtml.Trim();
                    string itemURL;
                    string imageURL;

                    IElement itemLink = item.QuerySelector(".item__title > a");
                    if (itemLink == null)
                    {
                        itemLink = item.QuerySelector(".item__info-link");
                    }
                    itemURL = itemLink.GetAttribute("href").Trim();

                    IElement image = item.QuerySelector(".item__image img");
                    if (!String.IsNullOrEmpty(image.GetAttribute("src")))
                    {
                        imageURL = image.GetAttribute("src").Trim();
                    }
                    else
                    {
                        imageURL = image.GetAttribute("data-src").Trim();
                    }

                    results.Add(new MLApiSearchResult(title, price, currency, imageURL, itemURL));
                }
                catch (NullReferenceException) { }
            }

            return(results);
        }