예제 #1
0
        /// <summary>
        /// 获取菜品详细
        /// </summary>
        private void GetFood()
        {
            var dishesPath = "dishes";
            var storeInfoBll = new StoreInfo();
            var storeList = storeInfoBll.GetModelList(string.Empty);
            foreach (var storeInfo in storeList)
            {
                try
                {
                    string CreatePath = string.Format(newPath, storeInfo.StoreName, dishesPath, string.Empty);
                    if (!Directory.Exists(CreatePath))
                    {
                        Directory.CreateDirectory(CreatePath);
                    }
                }
                catch (Exception e)
                {
                }
                var pageIndex = 1;
                while (true)
                {

                    var dishPath = string.Format("{0}shop/{1}/dish/p{2}/", _pageUrl, storeInfo.Fid, pageIndex);
                    pageIndex++;
                    //dishPath = @"http://www.xiaomishu.com/shop/D22I15N56303/dish/";
                    var htmlWeb = new HtmlWeb();

                    var htmlDoc = htmlWeb.Load(dishPath);

                    var dishesNodeList =
                    htmlDoc.DocumentNode.SelectNodes(
                        ".//div[@class='constr']/div[@class='constr_in']/div[@class='cell pl10']/ul[@id='foodListUl']/li");
                    if (dishesNodeList == null || dishesNodeList.Count <= 1)
                    {
                        break;
                    }
                    var dishesBll = new Dishes();
                    foreach (var dishNode in dishesNodeList)
                    {
                        var dishes = new Maticsoft.Model.Dishes();
                        var foodList = dishNode.SelectSingleNode(".//div[@class='fix']");
                        if (foodList == null)
                        {
                            continue;
                        }
                        var foodChildList = foodList.ChildNodes;
                        var foodName = foodList.ChildNodes.Count > 1 ? foodChildList[1].InnerText ?? string.Empty : string.Empty;
                        var foodPrice = foodList.ChildNodes.Count > 3 ? foodChildList[3].InnerText ?? string.Empty : string.Empty;
                        var popularity = foodList.ChildNodes.Count > 5 ? foodChildList[5].InnerText ?? string.Empty : string.Empty;
                        dishes.DishesID = Guid.NewGuid().ToString();
                        dishes.DishesName = foodName.Trim();
                        dishes.DishesMoney = foodPrice.Trim();
                        dishes.popularity = popularity.Trim();
                        dishes.StoreId = storeInfo.storeId;
                        var dishesPictureNode = dishNode.SelectSingleNode(
                            ".//div[@class='abs_out pt10']/div[@class='fix rel']/div[@class='pct50 l']/a[@class='g3']/img");
                        if (dishesPictureNode != null)
                        {
                            dishes.PictureName = string.Format("{0}.jpg", Guid.NewGuid().ToString());
                            var dishesPicturePath = dishesPictureNode.Attributes["src"].Value;
                            if (!string.IsNullOrEmpty(dishesPicturePath))
                            {
                                try
                                {
                                    db.DownFile(dishesPicturePath.Replace(@"/300_200/", "/"), string.Format(newPath, storeInfo.StoreName, dishesPath, dishes.PictureName));
                                }
                                catch (Exception)
                                {
                                    db.DownFile(dishesPicturePath, string.Format(newPath, storeInfo.StoreName, dishes.PictureName));
                                }
                                db.ZoomAuto(string.Format(newPath, storeInfo.StoreName, dishesPath, dishes.PictureName), newThumbnail + dishes.PictureName, 320, 240);//生成缩略图
                                db.ZoomAuto(string.Format(newPath, storeInfo.StoreName, dishesPath, dishes.PictureName), newThumbnail + "640_480_" + dishes.PictureName, 640, 480);//生成缩略图
                                db.ZoomAuto(string.Format(newPath, storeInfo.StoreName, dishesPath, dishes.PictureName), newThumbnail + "320_240_" + dishes.PictureName, 320, 240);//生成缩略图
                                db.ZoomAuto(string.Format(newPath, storeInfo.StoreName, dishesPath, dishes.PictureName), newThumbnail + "160_120_" + dishes.PictureName, 160, 120);//生成缩略图
                                dishes.PictureName = dishesPicturePath;
                            }

                        }
                        dishesBll.Add(dishes);
                    }
                }
            }
        }
예제 #2
0
        public void GetFood(Maticsoft.Model.StoreInfo storeInfo)
        {
            var dishesPath = "Food";
            try
            {
                //string CreatePath = string.Format(newPath, storeInfo.StoreName, dishesPath, string.Empty);
                //if (!Directory.Exists(CreatePath))
                //{
                //    Directory.CreateDirectory(CreatePath);
                //}

                //var foodThumbnail = string.Format(newThumbnail, dishesPath, storeInfo.StoreName);
                //if (!Directory.Exists(foodThumbnail))
                //{
                //    Directory.CreateDirectory(foodThumbnail);
                //}

                //var newPathThumb = string.Format(newPathThu, dishesPath);
                //if (!Directory.Exists(newPathThumb))
                //{
                //    Directory.CreateDirectory(newPathThumb);
                //}

                var dishesBll = new Maticsoft.BLL.Dishes();
                var disheslist = dishesBll.GetModelList(string.Format("StoreId = '{0}'", storeInfo.storeId));
                foreach (var dishese in disheslist)
                {
                    dishesBll.Delete(dishese.DishesID);
                }
                var dishTypeBll = new Maticsoft.BLL.DishesTyepTable();
                var dishTypeList = dishTypeBll.GetModelList(string.Format("BusinessID = '{0}'", storeInfo.storeId));
                foreach (var dishesTyepTable in dishTypeList)
                {
                    dishTypeBll.Delete(dishesTyepTable.DishesTypeID);
                }
                var dishTypePath = string.Format("{0}shop/{1}/dish/", _pageUrl, storeInfo.Fid);

                var storePictureBll = new StorePicture();

                var storePicturelist = storePictureBll.GetModelList(string.Format("StoreID = '{0}' and picType ='{1}'", storeInfo.storeId, dishesPath));
                foreach (var storePicture in storePicturelist)
                {
                    storePictureBll.Delete(storePicture.PID);
                }

                //dishPath = @"http://www.xiaomishu.com/shop/D22I15N56303/dish/";
                var htmlWeb = new HtmlWeb();

                var htmlDoc = htmlWeb.Load(dishTypePath);
                var dishTypeNodeList = htmlDoc.DocumentNode.SelectNodes(".//div[@class='constr']/div[@class='constr_in']/div[@class='l float_four']/div[@class='bdc bgf0 pr10 pb10']/a[@class='res_food_ins_gra']");
                if (dishTypeNodeList == null)
                {
                    return;
                }
                foreach (var dishTypeNode in dishTypeNodeList)
                {
                    var dishType = new Maticsoft.Model.DishesTyepTable();
                    dishType.BusinessID = storeInfo.storeId;
                    dishType.CreateDate = DateTime.Now;
                    dishType.DishesTypeID = Guid.NewGuid().ToString();
                    var dishName = dishTypeNode.InnerText;
                    var dishlength = dishName.IndexOf('(');
                    dishType.DishesTypeName = dishTypeNode.InnerText.Substring(0, dishlength);
                    dishTypeBll.Add(dishType);

                    var pageIndex = 1;
                    while (true)
                    {
                        var dishUrl = dishTypeNode.Attributes["href"].Value;

                        var dishPath = string.Format("{0}{1}p{2}/", _pageUrl, dishUrl, pageIndex);

                        pageIndex++;
                        htmlDoc = htmlWeb.Load(dishPath);
                        var dishesNodeList =
                        htmlDoc.DocumentNode.SelectNodes(
                            ".//div[@class='constr']/div[@class='constr_in']/div[@class='cell pl10']/ul[@id='foodListUl']/li[@class='res_food_list']");
                        if (dishesNodeList == null || dishesNodeList.Count <= 1)
                        {
                            break;
                        }
                        foreach (var dishNode in dishesNodeList)
                        {
                            var dishes = new Maticsoft.Model.Dishes();
                            var foodList = dishNode.SelectSingleNode(".//div[@class='fix']");
                            if (foodList == null)
                            {
                                continue;
                            }
                            var foodChildList = foodList.ChildNodes;
                            var foodName = foodList.ChildNodes.Count > 1 ? foodChildList[1].InnerText ?? string.Empty : string.Empty;
                            var foodPrice = foodList.ChildNodes.Count > 3 ? foodChildList[3].InnerText ?? string.Empty : string.Empty;
                            var popularity = foodList.ChildNodes.Count > 5 ? foodChildList[5].InnerText ?? string.Empty : string.Empty;
                            dishes.DishesID = Guid.NewGuid().ToString();
                            dishes.DishesName = foodName.Trim();
                            foodPrice = foodPrice.Trim().Replace("¥", string.Empty).Replace("¥", string.Empty);
                            dishes.dishTypeID = dishType.DishesTypeID;
                            if (foodPrice.Trim() == "时价")
                            {
                                dishes.DishesMoney = "0";
                                dishes.IsCurrentPrice = true;
                            }
                            else if (foodPrice.Trim() == "不详")
                            {
                                dishes.DishesMoney = "0";
                            }
                            else
                            {
                                dishes.DishesMoney = foodPrice;
                            }

                            dishes.popularity = popularity.Trim();
                            dishes.StoreId = storeInfo.storeId;
                            var dishesPictureNode = dishNode.SelectSingleNode(
                                ".//div[@class='abs_out pt10']/div[@class='fix rel']/div[@class='pct50 l']/a[@class='g3']/img");
                            if (dishesPictureNode != null)
                            {
                                var dishesPicturePath = dishesPictureNode.Attributes["src"].Value;
                                if (!string.IsNullOrEmpty(dishesPicturePath) && !dishesPicturePath.EndsWith("food_nopic.png"))
                                {
                                    var storePicture = new Maticsoft.Model.StorePicture();
                                    storePicture.PID = Guid.NewGuid().ToString();
                                    var pictureName = string.Format("{0}.jpg", storePicture.PID);
                                    storePicture.PictureName = pictureName;
                                    storePicture.PicType = dishesPath;
                                    storePicture.PicturePath = dishesPicturePath;
                                    storePicture.StoreId = storeInfo.storeId;
                                    storePictureBll.Add(storePicture);

                                    dishes.PictureName = pictureName;
                                    //try
                                    //{
                                    //    db.DownFile(dishesPicturePath.Replace(@"/300_200/", "/").Replace("/320_0/", "/"), string.Format(newPath, storeInfo.StoreName, dishesPath, dishes.PictureName));
                                    //}
                                    //catch (Exception)
                                    //{
                                    //}
                                    //try
                                    //{
                                    //    db.DownFile(dishesPicturePath, newPathThumb + dishes.PictureName);
                                    //}
                                    //catch (Exception)
                                    //{

                                    //    throw;
                                    //}
                                    //var storeInfopath = string.Format(newPath, storeInfo.StoreName, dishesPath, dishes.PictureName);
                                    //db.ZoomAuto(newPathThumb + dishes.PictureName, foodThumbnail + dishes.PictureName, 320, 240);//生成缩略图
                                    //db.ZoomAuto(newPathThumb + dishes.PictureName, foodThumbnail + "640_480_" + dishes.PictureName, 640, 480);//生成缩略图
                                    //db.ZoomAuto(newPathThumb + dishes.PictureName, foodThumbnail + "320_240_" + dishes.PictureName, 320, 240);//生成缩略图
                                    //db.ZoomAuto(newPathThumb + dishes.PictureName, foodThumbnail + "160_120_" + dishes.PictureName, 160, 120);//生成缩略图

                                }
                            }
                            dishesBll.Add(dishes);
                        }
                    }
                }

            }
            catch (Exception e)
            {
            }
        }