Exemplo n.º 1
0
        public ActionResult Article(string ContentUrl)
        {
            Content content = new Content();
            BasePtt basePtt = new BasePtt();
            var     res     = basePtt.RequestPtt(ContentUrl);
            var     htmlDoc = new HtmlDocument();

            htmlDoc.LoadHtml(res);

            content.Title           = htmlDoc.DocumentNode.SelectNodes("//span[@class='article-meta-value']")[2].InnerText;
            content.Author          = htmlDoc.DocumentNode.SelectNodes("//span[@class='article-meta-value']")[0].InnerText;
            content.ContentDateTime = htmlDoc.DocumentNode.SelectNodes("//span[@class='article-meta-value']")[3].InnerText;
            var a = htmlDoc.DocumentNode.SelectNodes("//div[@id='main-content']/text()").Select(item => item.InnerText).ToList();

            var l = htmlDoc.DocumentNode.SelectNodes("//div[@id='main-content']/a");

            List <string> linkList = new List <string>();

            if (l != null)
            {
                linkList = htmlDoc.DocumentNode.SelectNodes("//div[@id='main-content']/a").Select(item => item.InnerText).ToList();
            }
            content.MainContent = string.Join("", a);


            content.Imglink = linkList.Where(item => item.Contains("img")).ToList();
            content.Link    = linkList.Where(item => !item.Contains("img")).ToList();
            //var detail = board.Select(item => item.SelectNodes("div"));
            return(View(content));
        }
Exemplo n.º 2
0
        public ActionResult GetBoardList()
        {
            BoardListModel result = new BoardListModel();

            try
            {
                BasePtt basePtt = new BasePtt();
                var     res     = basePtt.RequestPtt("bbs/index.html");
                var     htmlDoc = new HtmlDocument();
                htmlDoc.LoadHtml(res);
                var board  = htmlDoc.DocumentNode.SelectNodes("//a[@class='board']");
                var detail = board.Select(item => item.SelectNodes("div"));

                result = new BoardListModel()
                {
                    Status = "OK",
                    Msg    = "",
                    Data   = detail.Select(item => new BoardList()
                    {
                        BoardID     = item[0].InnerText,
                        VisitCount  = item[1].ChildNodes[0].InnerText,
                        BoardType   = item[2].InnerText,
                        BoardHeader = item[3].InnerText
                    }).ToList()
                };
            }
            catch (Exception ex)
            {
                result.Status = "NG";
                result.Msg    = ex.Message;
            }
            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 3
0
        public ActionResult GetArticleList(string boardId)
        {
            TitleInfoModel result = new TitleInfoModel();

            try
            {
                int count     = 100;
                int infoCount = 0;
                int index     = 0;
                List <TitleInfo>   titleInfos = new List <TitleInfo>();
                BasePtt            basePtt    = new BasePtt();
                HtmlNode           htmlNode   = new HtmlNode(HtmlNodeType.Comment, new HtmlDocument(), 0);
                HtmlNodeCollection htmlNodes  = new HtmlNodeCollection(htmlNode);
                var infos = basePtt.TraversalPtt(boardId, infoCount, count, htmlNodes);

                foreach (var item in infos)
                {
                    TitleInfo titleInfo = new TitleInfo();
                    if (item.SelectSingleNode("div[@class='title']").ChildNodes.Count <= 1)//已刪除的文章
                    {
                        continue;
                    }

                    titleInfo = new TitleInfo()
                    {
                        Index     = index,
                        Heat      = item.SelectSingleNode("div[@class='nrec']").ChildNodes.Count > 0 ? item.SelectSingleNode("div[@class='nrec']").ChildNodes[0].InnerText : "0",
                        Author    = item.SelectSingleNode("div[@class='meta']").ChildNodes[1].InnerText,
                        Date      = item.SelectSingleNode("div[@class='meta']").ChildNodes[5].InnerText,
                        Title     = item.SelectSingleNode("div[@class='title']").ChildNodes[1].InnerText,
                        ContentID = item.SelectSingleNode("div[@class='title']").ChildNodes[1].GetAttributeValue("href", string.Empty)
                    };
                    titleInfo.HeatM = basePtt.ConvertHeat(titleInfo.Heat);

                    if (titleInfo.Title.Contains("公告"))//跳過公告
                    {
                        continue;
                    }

                    titleInfos.Add(titleInfo);
                    infoCount++;
                    index++;
                    if (infoCount == count)
                    {
                        break;
                    }
                }
                result.Data = titleInfos;
            }
            catch (Exception ex)
            {
                result.Status = "NG";
                result.Msg    = ex.Message;
            }
            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 4
0
        public ActionResult GetContent(string boardId, int count)
        {
            ArticleModel result = new ArticleModel();

            try
            {
                int                infoCount = 0;
                List <Article>     articles  = new List <Article>();
                BasePtt            basePtt   = new BasePtt();
                HtmlNode           htmlNode  = new HtmlNode(HtmlNodeType.Comment, new HtmlDocument(), 0);
                HtmlNodeCollection htmlNodes = new HtmlNodeCollection(htmlNode);
                var                infos     = basePtt.TraversalPtt(boardId, infoCount, count, htmlNodes);

                foreach (var item in infos)
                {
                    TitleInfo titleInfo = new TitleInfo();
                    if (item.SelectSingleNode("div[@class='title']").ChildNodes.Count <= 1)//已刪除的文章
                    {
                        continue;
                    }
                    var contentLink = item.SelectSingleNode("div[@class='title']").ChildNodes[1].Attributes["href"].Value;
                    var res         = basePtt.RequestPtt(contentLink);
                    var htmlDoc     = new HtmlDocument();
                    htmlDoc.LoadHtml(res);
                    var content = htmlDoc.DocumentNode.SelectNodes("//div[@class='article-metaline']");
                    if (content == null)
                    {
                        continue;
                    }
                    var article = new Article()
                    {
                        Author  = content[0].ChildNodes[1].InnerText,
                        Title   = content[1].ChildNodes[1].InnerText,
                        Time    = basePtt.HandleTime(content[2].ChildNodes[1].InnerText).ToString("yyyy/MM/dd"),
                        Content = content[2].NextSibling.InnerText,
                        Heat    = item.SelectSingleNode("div[@class='nrec']").ChildNodes.Count > 0 ? item.SelectSingleNode("div[@class='nrec']").ChildNodes[0].InnerText : "0"
                    };
                    articles.Add(article);
                }
                result.Data = articles;
            }
            catch (Exception ex)
            {
                result.Status = "NG";
                result.Msg    = ex.Message;
            }
            return(Json(result, JsonRequestBehavior.AllowGet));
        }