Example #1
0
        private async Task <FoodMaterialItem> GetFoodMaterial(string foodMaterialName, string foodMaterialHref)
        {
            string englishName = CrawlerHelper.GetUrlLast(foodMaterialHref);

            var foodMaterial = new FoodMaterialItem()
            {
                Description = foodMaterialName,
                EnglishName = englishName,
                SourceUrl   = foodMaterialHref,
                Photo       = FoodMaterial.GetImageUrlPath(englishName),
            };

            IHtmlDocument foodMaterialDoc = await CrawlerHelper.GetDocumentAddHttpPrefixAsync(foodMaterialHref + "/useful");

            var sourceImgUrl = foodMaterialDoc.QuerySelector("#category_pic")?.GetAttribute("data-src");

            if (sourceImgUrl == null)
            {
                Logger.Error($"{foodMaterialName} 找不到 category_pic");
            }

            //string localImgPath = "FoodMaterial\\" + englishName + ".jpg";
            if (ChiMaConfig.NeedDownloadFoodMaterialImage && sourceImgUrl != null)
            {
                string localImgPath = FoodMaterial.GetImageLocalPath(englishName);
                CrawlerHelper.DownloadImgAndSaveAsync(sourceImgUrl, localImgPath);
            }

            var nutritionsUL = foodMaterialDoc.QuerySelector(".category_use_table.mt10.clear")?.FirstElementChild;

            foodMaterial.Nutritions = new List <string>();
            if (nutritionsUL != null)
            {
                foreach (var li in nutritionsUL.GetElementsByTagName("li"))
                {
                    var name = li.TextContent;
                    //var value = li.FirstElementChild.TextContent;
                    foodMaterial.Nutritions.Add(name);
                }
            }

            return(foodMaterial);
        }