Exemple #1
0
        /// <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);
            }
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        /// <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;
            }
        }