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