/// <summary> /// 抓取新聞列表、各個新聞類別 /// </summary> /// <param name="page"></param> public void DownloadNewsData(int page) { string link; //蘋果日報網址 link = "https://tw.appledaily.com/new/realtime/"; link = link + page.ToString(); try { HtmlWeb web = new HtmlWeb(); HtmlDocument doc = web.Load(link); //新聞資料 (網址 + 時間 + 類型 ) var nodeData = doc.DocumentNode.SelectNodes("//div[@class='abdominis rlby clearmen']/ul[1]/li"); NewsViews newsList = new NewsViews(); List <News> newsData = new List <News>(); foreach (var nsd in nodeData) { News news = new News { //建立key值 Id = Guid.NewGuid(), //抓取類型 Types = nsd.SelectSingleNode("./a/h2").InnerText }; //抓取網址 var newlinks = nsd.SelectSingleNode("./a").Attributes["href"].Value; news.Links = newlinks; //抓取內文 var DNC = DownloadNewsContent(newlinks); news.Content = DNC["新聞內文"]; //新聞時間 -> 年/月/日 + 時:分 news.Time = Convert.ToDateTime(DNC["內文時間"].Substring(5)); //抓取標題 //news.Head = nsd.SelectSingleNode("./a/h1").InnerText; news.Head = DNC["內文標題"]; newsData.Add(news); Thread.Sleep(1); } orderLibrary.SaveNewsData(newsData); } catch (System.IndexOutOfRangeException e) { System.Console.WriteLine(e.Message); throw new System.ArgumentOutOfRangeException("陣列項目錯誤:", e); } }
private void DownloadNewsData(int page) { string link; //自由時報網址 link = "http://news.ltn.com.tw/list/breakingnews/all/"; link = link + page.ToString(); try { HtmlWeb web = new HtmlWeb(); HtmlDocument doc = web.Load(link); //新聞資料 (網址 + 時間 + 類型 ) var nodeData = doc.DocumentNode.SelectNodes("//div[@class='whitecon boxTitle']//ul[@class='list imm']/li"); NewsViews newsList = new NewsViews(); List <News> newsData = new List <News>(); foreach (var nsd in nodeData) { News news = new News { //建立key值 Id = Guid.NewGuid(), //抓取類型 Types = nsd.SelectSingleNode("./div/a[1]").InnerText }; //抓取網址 var newlinks = nsd.SelectSingleNode("./a").Attributes["href"].Value; news.Links = newlinks; //抓取內文 var DNC = DownloadNewsContent(newlinks); news.Content = DNC["新聞內文"]; //新聞時間 -> 年/月/日 + 時:分 news.Time = Convert.ToDateTime(DNC["內文時間"].Substring(5)); //抓取標題 //news.Head = nsd.SelectSingleNode("./a/h1").InnerText; news.Head = DNC["內文標題"]; newsData.Add(news); Thread.Sleep(1); } //orderLibrary.saveNewsData(newsData); } catch (System.IndexOutOfRangeException e) { System.Console.WriteLine(e.Message); throw new System.ArgumentOutOfRangeException("陣列項目錯誤:", e); } }
/// <summary> /// 依據類型、關鍵字等條件進行Selcect /// </summary> /// <param name="Types">類型</param> /// <param name="Keyword">關鍵字</param> /// <returns></returns> public NewsViews GetNewsDatasByCondition(string Types, string Keyword, int currentPage) { var DatasList = GetAllNews(); var result = DatasList.OrderByDescending(c => c.Time) .Where(c => string.IsNullOrEmpty(Types) ? true : c.Types == Types) .Where(c => string.IsNullOrEmpty(Keyword) ? true : (string.IsNullOrEmpty(c.Content) ? false : c.Content.Contains(Keyword))) .ToList(); try { NewsViews newsList = new NewsViews() { NewsList = result.ToPagedList(currentPage, 20), Types_list = DatasList.Where(x => !String.IsNullOrWhiteSpace(x.Types)).GroupBy(x => x.Types).Select(x => new System.Web.Mvc.SelectListItem { Text = x.Key, Value = x.Key }).ToList() }; return(newsList); } catch (Exception) { throw; } }