Пример #1
0
        public IActionResult GetHouseInfo(string cityName, string source = "", int houseCount = 400, int withAnyDays = 3)
        {
            var houses = _dataContent.HouseInfos.Where(h => h.LocationCityName == cityName &&
                                                       h.PubTime > DateTime.Now.Date.AddDays(-withAnyDays));

            if (!string.IsNullOrEmpty(source))
            {
                houses = houses.Where(h => h.Source == source);
            }
            var lstHouseInfo = houses.OrderByDescending(h => h.PubTime).Take(houseCount).ToList();

            var lstRoomInfo = lstHouseInfo.Select(house =>
            {
                var markBGType = string.Empty;
                int housePrice = (int)house.HousePrice;
                if (housePrice > 0)
                {
                    markBGType = LocationMarkBGType.SelectColor(housePrice / 1000);
                }

                return(new HouseInfo
                {
                    Money = house.DisPlayPrice,
                    HouseURL = house.HouseOnlineURL,
                    HouseLocation = house.HouseLocation,
                    HouseTime = house.PubTime.ToString(CultureInfo.CurrentCulture),
                    HousePrice = housePrice,
                    LocationMarkBG = markBGType,
                    DisplaySource = ConstConfigurationName.ConvertToDisPlayName(house.Source)
                });
            });

            return(Json(new { IsSuccess = true, HouseInfos = lstRoomInfo }));
        }
Пример #2
0
        public IActionResult GetHouseInfo(string cityName, string source = "", int houseCount = 500,
                                          int withAnyDays = 7, string keyword = "")
        {
            var houses = houseDapper.SearchHouseInfo(cityName, source, houseCount, withAnyDays, keyword);
            var rooms  = houses.Select(house =>
            {
                var markBGType = string.Empty;
                int housePrice = (int)house.HousePrice;
                if (housePrice > 0)
                {
                    markBGType = LocationMarkBGType.SelectColor(housePrice / 1000);
                }

                return(new HouseInfo
                {
                    Source = house.Source,
                    Money = house.DisPlayPrice,
                    HouseURL = house.HouseOnlineURL,
                    HouseLocation = house.HouseLocation,
                    HouseTime = house.PubTime.ToString(),
                    HouseTitle = house.HouseTitle,
                    HousePrice = housePrice,
                    LocationMarkBG = markBGType,
                    DisplaySource = ConstConfigurationName.ConvertToDisPlayName(house.Source)
                });
            });

            ElasticsearchService.AddHouse(houses.ToList());
            return(Json(new { IsSuccess = true, HouseInfos = rooms }));
        }
Пример #3
0
        private IEnumerable <HouseInfo> GetRoomList(string url)
        {
            var htmlResult = HTTPHelper.GetHTMLByURL(url);
            var page       = new HtmlParser().Parse(htmlResult);

            return(page.QuerySelector("ul.screening_left_ul").QuerySelectorAll("li").Select(room =>
            {
                var screening_time = room.QuerySelector("p.screening_time").TextContent;
                var screening_price = room.QuerySelector("h5").TextContent;
                var locationInfo = room.QuerySelector("a");
                var locationContent = locationInfo.TextContent.Split(',').FirstOrDefault();
                var location = locationContent.Remove(0, locationContent.IndexOf("租") + 1);

                int housePrice = 0;
                int.TryParse(screening_price.Replace("¥", "").Replace("元/月", ""), out housePrice);

                var markBGType = LocationMarkBGType.SelectColor(housePrice / 1000);

                return new HouseInfo
                {
                    Money = screening_price,
                    HouseURL = "http://www.huzhumaifang.com" + locationInfo.GetAttribute("href"),
                    HouseLocation = location,
                    HouseTime = screening_time,
                    HousePrice = housePrice,
                    LocationMarkBG = markBGType,
                };
            }));
        }
Пример #4
0
        public IActionResult GetHouseInfo(string cityName, string source = "", int houseCount = 100,
                                          int withAnyDays = 3, bool showDoubanInvalidData     = true, string keyword = "")
        {
            try
            {
                var lstHouseInfo = new DBHouseInfoDAL().SearchHouseInfo(cityName, source, houseCount, withAnyDays, showDoubanInvalidData, keyword);
                var lstRoomInfo  = lstHouseInfo.Select(house =>
                {
                    var markBGType = string.Empty;
                    int housePrice = (int)house.HousePrice;
                    if (housePrice > 0)
                    {
                        markBGType = LocationMarkBGType.SelectColor(housePrice / 1000);
                    }

                    return(new HouseInfo
                    {
                        Money = house.DisPlayPrice,
                        HouseURL = house.HouseOnlineURL,
                        HouseLocation = house.HouseLocation,
                        HouseTime = house.PubTime.ToString(),
                        HousePrice = housePrice,
                        LocationMarkBG = markBGType,
                        DisplaySource = ConstConfigurationName.ConvertToDisPlayName(house.Source)
                    });
                });
                return(Json(new { IsSuccess = true, HouseInfos = lstRoomInfo }));
            }catch (Exception ex)
            {
                return(Json(new { IsSuccess = false, error = ex.ToString() }));
            }
        }
Пример #5
0
        public IActionResult GetHouseInfo(string cityName, string source = "", int houseCount = 100,
                                          int intervalDay = 7, string keyword = "", bool refresh = false)
        {
            try
            {
                var houseList = CrawlerDataDapper.SearchHouseInfo(cityName, source, houseCount, intervalDay, keyword, refresh);
                var rooms     = houseList.Select(house =>
                {
                    var markBGType = string.Empty;
                    int housePrice = (int)house.HousePrice;
                    if (housePrice > 0)
                    {
                        markBGType = LocationMarkBGType.SelectColor(housePrice / 1000);
                    }

                    return(new HouseInfo
                    {
                        Money = house.DisPlayPrice,
                        HouseURL = house.HouseOnlineURL,
                        HouseLocation = house.HouseLocation,
                        HouseTime = house.PubTime.ToString(),
                        HousePrice = housePrice,
                        LocationMarkBG = markBGType,
                        DisplaySource = ConstConfigurationName.ConvertToDisPlayName(house.Source)
                    });
                });
                return(Json(new { IsSuccess = true, HouseInfos = rooms }));
            }
            catch (Exception ex)
            {
                return(Json(new { IsSuccess = false, error = ex.ToString() }));
            }
        }
Пример #6
0
        public IActionResult GetHouseInfo(string cityName, string source = "", int houseCount = 400,
                                          int withAnyDays = 3, string keyword = "")
        {
            var houses = new DBHouseInfoDAL().SearchHouseInfo(cityName, source, houseCount, withAnyDays, keyword);

            var lstRoomInfo = houses.Select(house =>
            {
                var markBGType = string.Empty;
                int housePrice = (int)house.HousePrice;
                if (housePrice > 0)
                {
                    markBGType = LocationMarkBGType.SelectColor(housePrice / 1000);
                }

                return(new HouseInfo
                {
                    Money = house.DisPlayPrice,
                    HouseURL = house.HouseOnlineURL,
                    HouseLocation = house.HouseLocation,
                    HouseTime = house.PubTime.ToString(CultureInfo.CurrentCulture),
                    HousePrice = housePrice,
                    LocationMarkBG = markBGType,
                    DisplaySource = ConstConfigurationName.ConvertToDisPlayName(house.Source)
                });
            });

            return(Json(new { IsSuccess = true, HouseInfos = lstRoomInfo }));
        }
Пример #7
0
        private IEnumerable <HouseInfo> GetRoomList(int pageNum)
        {
            var houses = PeopleRentingCrawler.GetHouseData(pageNum);

            return(houses.Select(house =>
            {
                var markBGType = LocationMarkBGType.SelectColor((int)house.HousePrice / 1000);
                return new HouseInfo
                {
                    Money = house.DisPlayPrice,
                    HouseURL = house.HouseOnlineURL,
                    HouseLocation = house.HouseLocation,
                    HouseTime = house.PubTime.ToShortDateString(),
                    HousePrice = house.HousePrice
                };
            }));
        }
        private IEnumerable <HouseInfo> ParseRoom(string html)
        {
            var page = new HtmlParser().Parse(html);

            return(page.QuerySelector("ul.listUl").QuerySelectorAll("li[logr]").Select(room =>
            {
                int.TryParse(room.QuerySelector("b").TextContent, out var housePrice);
                var markBGType = LocationMarkBGType.SelectColor(housePrice / 1000);
                var a = room.QuerySelector("a");
                return new HouseInfo
                {
                    HouseLocation = room.QuerySelector("p.add").QuerySelectorAll("a").Last().TextContent.Replace("租房", ""),
                    HouseTitle = a.TextContent,
                    Money = housePrice.ToString(),
                    HouseURL = a.GetAttribute("href"),
                    LocationMarkBG = markBGType,
                };
            }));
        }
Пример #9
0
 public IActionResult GetUserCollectionHouses(string cityName, string source = "")
 {
     try
     {
         var userID = GetUserID();
         if (userID == 0)
         {
             return(Json(new { IsSuccess = false, error = "用户未登陆,无法查看房源收藏。" }));
         }
         var houseList = UserCollectionDapper.FindUserCollections(userID, cityName, source);
         var rooms     = houseList.Select(house =>
         {
             var markBGType = string.Empty;
             int housePrice = (int)house.HousePrice;
             if (housePrice > 0)
             {
                 markBGType = LocationMarkBGType.SelectColor(housePrice / 1000);
             }
             return(new HouseInfo
             {
                 ID = house.Id,
                 Source = house.Source,
                 Money = house.DisPlayPrice,
                 HouseURL = house.HouseOnlineURL,
                 HouseLocation = house.HouseLocation,
                 HouseTime = house.PubTime.ToString(),
                 HouseTitle = house.HouseTitle,
                 HousePrice = housePrice,
                 LocationMarkBG = markBGType,
                 DisplaySource = ConstConfigurationName.ConvertToDisPlayName(house.Source)
             });
         });
         return(Json(new { IsSuccess = true, HouseInfos = rooms }));
     }
     catch (Exception ex)
     {
         return(Json(new { IsSuccess = false, error = ex.ToString() }));
     }
 }
Пример #10
0
        private IEnumerable <HouseInfo> GetRoomListByIndex(string cnName, int index)
        {
            var url        = $"http://{cnName}.58.com/pinpaigongyu/pn/{index}";
            var htmlResult = PinPaiGongYuHouseCrawler.GetHouseHTML(url);
            var page       = new HtmlParser().Parse(htmlResult);

            return(page.QuerySelectorAll("li").Where(element => element.HasAttribute("logr")).Select(element =>
            {
                var houseTitle = element.QuerySelector("h2").TextContent;
                var houseInfoList = houseTitle.Split(' ');
                int.TryParse(element.QuerySelector("b").TextContent, out var housePrice);
                var markBGType = LocationMarkBGType.SelectColor(housePrice / 1000);

                return new HouseInfo
                {
                    HouseTitle = houseTitle,
                    HouseURL = $"http://{cnName}.58.com" + element.QuerySelector("a").GetAttribute("href"),
                    Money = element.QuerySelector("b").TextContent,
                    HouseLocation = new[] { "公寓", "青年社区" }.All(s => houseInfoList.Contains(s)) ? houseInfoList[0] : houseInfoList[1],
                    LocationMarkBG = markBGType,
                };
            }));
        }
Пример #11
0
        private IEnumerable <HouseInfo> ParseRoom(string html)
        {
            if (html.Contains("验证码"))
            {
                return(new List <HouseInfo>());
            }
            var page = new HtmlParser().Parse(html);

            return(page.QuerySelector("ul.listUl").QuerySelectorAll("li[logr]").Select(room =>
            {
                int housePrice = 0;
                int.TryParse(room.QuerySelector("b").TextContent, out housePrice);
                var markBGType = LocationMarkBGType.SelectColor(housePrice / 1000);
                var a = room.QuerySelector("a");
                return new HouseInfo
                {
                    HouseLocation = room.QuerySelector("p.add").QuerySelectorAll("a").Last().TextContent.Replace("租房", ""),
                    HouseTitle = a.TextContent,
                    DisPlayPrice = housePrice.ToString(),
                    HouseOnlineURL = a.GetAttribute("href")
                };
            }));
        }