예제 #1
0
        public async Task <IActionResult> ParsePage(
            ParsePageDto model
            )
        {
            try
            {
                var responsePayload = await _parsePageService.ParsePageAsync(model);

                return(Ok(responsePayload));
            }
            catch (Exception ex)
            {
                return(BadRequest(new { ex.Message }));
            }
        }
        public async Task <ParsePageReturnDto> ParsePageAsync(ParsePageDto model)
        {
            var web = new HtmlWeb
            {
                AutoDetectEncoding = false,
                OverrideEncoding   = Encoding.UTF8
            };
            var htmlDoc = await LoadPage(model.Url, web);

            var rootAddress     = web.ResponseUri.Host;
            var fullRootAddress = web.ResponseUri.AbsoluteUri.Split(rootAddress)[0] + rootAddress;
            var pageImages      = new List <string>();

            pageImages.AddRange(GetPageFavicons(htmlDoc, fullRootAddress));
            pageImages.AddRange(GetPageImages(htmlDoc, fullRootAddress));
            pageImages = pageImages.Distinct().ToList();

            return(new ParsePageReturnDto(GetPageTitle(htmlDoc), model.Url, pageImages,
                                          GetPageTexts(htmlDoc, model.MinTextLength, model.MaxTextLength)));
        }