/// <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); }
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); }
/// <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); }
/// <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); }