新闻联播(文字版)云应用开发笔记

优采云 发布时间: 2022-07-01 13:42

  新闻联播(文字版)云应用开发笔记

  看国内大事,见证国家发展;听百姓心声,聚焦民生热点;说世界风云,纵览天下变化;新闻联播和您一起——看中国,观世界。

  新闻联播聚焦时政要闻,很多朋友都很关注,但是该节目每天晚上7点播出,很多朋友没有办法观看,另外,该节目时间比较长,也不利于时间紧张的人员快速预览。鉴于此,我打算采用红贝敏捷开发架构,开发一个文字版的新闻联播,供大家随时查阅,并可以快速浏览每天的联播内容。

  一、信息来源

  从央视网新闻联播栏目网页上抓取每日的联播内容,主要分为两步:

  1、抓取每日新闻联播的目录(标题、链接及对应的图片),网址格式如下:

  

  ,其中yyyyMMdd为日期格式,比如要抓取2019年5月25日的新闻目录,则对应的网址是:

  2、根据第1步的链接,获取每条新闻的详细内容(文字版),对应的网址举例如下:

  二、抓取技术

  对艺术信息的抓取,采用HtmlAgilityPack组件进行,主要就是采用xPath,对网页进行定位、过滤,现就上面的两步对应的核心抓取方法说明如下,以C#语言为例:

  1、新闻联播目录相关数据抓取方法

   private string GetUnionNews(string strDate) { DateTime dtNow = DateTime.Now; if (dtNow.Hour < 21) dtNow = dtNow.AddDays(-1);<br /> if (!string.IsNullOrEmpty(strDate)) { DateTime dtDate = DateTime.Parse(strDate); if (DateTime.Compare(dtNow, dtDate) > 0) dtNow = dtDate; }<br /> string sRet = ""; string sUrl = string.Format("http://tv.cctv.com/lm/xwlb/day/{0}.shtml", dtNow.ToString("yyyyMMdd"));            string sHTML = Utils.WebLib.Get(sUrl); HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(sHTML); HtmlNodeCollection uls = htmlDoc.DocumentNode.SelectNodes("//ul"); int iOrder=0; string strSplit = "", strTitle = "",strImage="",strLink="", strColor = "color-red"; foreach (HtmlNode li in uls) { IEnumerable links = li.Descendants("a"); foreach (HtmlNode link in links) { if (iOrder > 0) { if (iOrder > 3) strColor = "color-blue"; HtmlNode img = link.SelectSingleNode("./div[@class='imgbox']/img"); HtmlNode title = link.SelectSingleNode("./div[@class='text']/div[@class='title']"); strTitle = title.InnerText.Trim().Replace("\"", ""); strLink = link.GetAttributeValue("href", ""); strImage = img.GetAttributeValue("src", ""); if (strTitle.StartsWith("[视频]")) strTitle = strTitle.Substring(4); if (strTitle.IndexOf(",") > -1) strTitle = strTitle.Replace(",", "");                        sRet += strSplit + "{\"icoColor\":\"" + strColor + "\",\"title\":\"" + strTitle + "\",\"click\":\"appUnionNewsView('" + strLink + "','" + strImage + "','" + strTitle + "')\"}"; strSplit = ","; } iOrder++; } }<br /> return sRet; }

  

  2、新闻内容抓取方法

   private string GetUnionNewsView(string strUrl) { string sRet = ""; string sHTML = Utils.WebLib.Get(strUrl); HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(sHTML); HtmlNode wrapper = htmlDoc.DocumentNode.SelectSingleNode("//body/div[@class='bg_top_h_tile']/div[@class='bg_top_owner']/div[4]/div[@class='column_wrapper']");            HtmlNode body = wrapper.SelectSingleNode("./div[@id='about_txt']/div[@class='mbd']/div[@class='cnt_bd']");            sRet = body.InnerHtml; return sRet; }

  三、APP开发

  获取以上数据后,通过红贝敏捷开发架构,大约2个小时即可完成APP端的开发,因为该架构基本不需要与前台html、JavaScript打交道,只有在后台按组件模块的格式输出JSON文件,红贝应用架构即可自动生成对应的页面,所以非常快。

  该APP主要有两个页面组成,首页上半部为日历组件,点击日期可以查看对应日期的新闻联播目录;

  下半部分为对应日期的新闻联播目录,点击目录进入第2页——新闻详细页面。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线