安卓TV开发(七) 移动智能终端多媒体之在线解析网页视频源

来源:互联网 发布:好听的淘宝网店名字 编辑:程序博客网 时间:2024/04/29 01:43

     载请标明出处:http://blog.csdn.net/sk719887916/article/details/40049137,作者:skay

    结束了所有UI绘制的学习,智能设备常用的应用音视频类,游戏类和浏览器类,本篇文章先从视频类应用开始,主流的视频播放器离不开在线解码,视频播放和在线直播等,今天就先学习怎么解析一个普通的视频网站html。想了解焦点可控UI的朋友可以阅读前几篇文章和上边文章。

 移动智能终端UI之实现类似GridView的焦点控制FocusView框架

   解析网站,常用开源的jsoup进行解析 今天就先给大家看下怎么使用此开源jar包进行解析一个普通的网页 本篇用http://www.yinyuetai.com/为列,


 一 建立用于接收的Model

    

/** * @author liuyongkui * */public class TvTaiModel implements  Serializable{        private static final long serialVersionUID = 1L;      /**      * 网页上面的视频连接      */      private String href;      /**      * 解析以后的真正的视频连接      */      private String realHref;      /**      * 视频的图片链接      */      private String img;      /**      * 视频的标题      */      private String title;      /**      * 视频的清晰度      */      private String shdIco;      /**      * 视频的时间      */      private String v_time_num;      /**      * 视频的艺人      */      private String man;      /**      * 视频的描述      */      private String description;        public String getHref() {          return href;      }        public void setHref(String href) {          this.href = href;      }        public String getRealHref() {          return realHref;      }        public void setRealHref(String realHref) {          this.realHref = realHref;      }        public String getImg() {          return img;      }        public void setImg(String img) {          this.img = img;      }        public String getTitle() {          return title;      }        public void setTitle(String title) {          this.title = title;      }        public String getShdIco() {          return shdIco;      }        public void setShdIco(String shdIco) {          this.shdIco = shdIco;      }        public String getV_time_num() {          return v_time_num;      }        public void setV_time_num(String v_time_num) {          this.v_time_num = v_time_num;      }        public String getMan() {          return man;      }        public void setMan(String man) {          this.man = man;      }        public String getDescription() {          return description;      }        public void setDescription(String description) {          this.description = description;      }       }

二 建立用于获取管理视频资源的 DataVideoManager


      1,解析来自音乐的MV列表

public static ArrayList<TvTaiModel> getYinYueTai(String url){          ArrayList<TvTaiModel> listData = new ArrayList<TvTaiModel>();          try {              Document doc = Jsoup.connect(url).get();             Element mv_list_vertical = doc.getElementById("mvlist");              Elements mv_lists = mv_list_vertical.select("li");              System.out.println(mv_lists.size());              for (Element mv : mv_lists) {                  TvTaiModel yinYueTaiModel = new TvTaiModel();                  Element thumb_mv = mv.select("div.thumb_mv").first();                  Element href_a = thumb_mv.getElementsByTag("a").first();                  yinYueTaiModel.setHref(href_a.attr("href"));                  Element img = href_a.getElementsByTag("img").first();                  yinYueTaiModel.setImg(img.attr("src"));                  yinYueTaiModel.setTitle(img.attr("title"));                                yinYueTaiModel.setV_time_num(thumb_mv.select("div.v_time_num").text());                  Element info = mv.select("div.info").first();                  // yinYueTaiModel.setDescription(info.select("p.description hid J_id").first().text());                  listData.add(yinYueTaiModel);              }          }catch (Exception e){              e.printStackTrace();          }          return  listData;      }
   

  2, 解析QQ体育频道的视频列表

    

   /*** 获取QQ NBA视频列表 * @param url * @return */public static ArrayList<TvTaiModel> getQQNBA(String url){ArrayList<TvTaiModel> listData = new ArrayList<TvTaiModel>();try {Document doc = Jsoup.connect(url).get();Element ul = doc.getElementById("piclist");Elements lists = ul.getElementsByTag("li");for (Element video : lists) {TvTaiModel model = new TvTaiModel();Element href = video.select("div.bdhui_pic").first().getElementsByTag("a").first();model.setHref(href.attr("href"));Element img = href.getElementsByTag("img").first();model.setImg(img.attr("src"));model.setTitle(img.attr("alt"));model.setV_time_num(video.select("td.lh16").text().replace(" ", " "));System.out.println(model.toString());listData.add(model);}} catch (Exception e) {e.printStackTrace();}return listData;}

    3  通过两个列子可以看出 jsoup.connect(url).get();就可以获取网页的dom元素,无需我们建立连接和请求此jar已经封装好了请求并以返回xml文件

然后通过获取xml的元素节点可以获取里面的对应数据,具体网页还需要我们自己去打开源网页产看代码源,对于熟悉html和js朋友看懂一个类似音悦台和腾讯视频的网站静态代码不在话下 我们也可以解析更多的视频源,如优酷,目前已经有成熟的专门解析优酷是视频源的开源项目,但是对于一个实际开发视频客户端项目的人来说,我们无需去解析,因为服务器会提供相关的视频接口,供我们去请求获取视频数据返回json格式的数据源,


 三 完善管理器

    完善数据管理者,因为后面视频直播会用到相关此数据源

 

static  ArrayList<TvTaiModel> getData(TvModle tvModle) {String url = tvModle.getUrl();List<TvTaiModel> taiModels = null;switch (tvModle.getPostion()) {case 0:taiModels = getYinYueTai(url);    break;case 1:taiModels = getQQNBA(url);   break;default:break;}return (ArrayList<TvTaiModel>) taiModels;}

     到此数据接口和接收javabean已经写好,通过本次的视频源,下篇 移动智能终端多媒体之在线加载网页视频源】 将继续讲解获取网络视频和播放的功能,欢迎大家的阅读。

参考资料:http://blog.csdn.net/jwzhangjie/article/details/17195011

如本篇侵犯到您的原创请及时联系本人,谢谢。

 jsoup下载地址

http://download.csdn.net/detail/sk719887916/8852319


1 0
原创粉丝点击