载请标明出处: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

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

  1. 安卓TV开发(八) 移动智能终端多媒体爬虫技术 获取加载网页视频源

    转载请标明出处:http://blog.csdn.net/sk719887916/article/details/40049137,作者:skay 从上一篇学习中,学习了多媒体技术中的怎么去用josu ...

  2. 安卓TV开发(五) 移动智能终端UI之实现主流TV焦点可控UI

      载请标明出处:http://blog.csdn.net/sk719887916,作者:skay    由于其他网站收录,导致你无法查看本系列原创文章请点击此处 安卓TV开发(四)实现主流智能T ...

  3. 安卓TV开发(六) 移动智能终端UI之实现类似GridView的焦点控制FocusView框架

    转载请标明出处:http://blog.csdn.net/sk719887916/article/details/40045089,作者:skay 前言 安卓TV开发(五) 移动智能终端UI之实现主流 ...

  4. 安卓TV开发(十) 智能电视开发之在线视频直播

    转载注明出处:http://blog.csdn.net/sk719887916/article/details/46582987 从<安卓TV开发(八) 移动智能终端多媒体之在线加载网页视频源& ...

  5. 安卓Tv开发(一)移动智能电视之焦点控制(触控事件)

    前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家居,以及可穿戴设备的大量使用,但是这些设备上的开发并不是和传统手机开发一样,特别是焦点控制和用户操作体验风格上有很大的区别,本系列博 ...

  6. 安卓TV开发(四) 实现主流智能TV视频播放器UI

    前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家居,以及可穿戴设备的大量使用,但是这些设备上的开发并不是和传统手机开发一样,特别是焦点控制和用户操作体验上有很大的区别,本系列博文主 ...

  7. 安卓TV开发(三) 移动智能设备之实现主流TV电视盒子焦点可控UI

    前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家居,以及可穿戴设备的大量使用,但是这些设备上的开发并不是和传统手机开发一样,特别是焦点控制和用户操作体验上有很大的区别,本系列博文主 ...

  8. 安卓Tv开发(二)移动智能电视之焦点控制(按键事件)

    原文:http://blog.csdn.net/sk719887916/article/details/44781475 skay 前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家 ...

  9. 安卓TV开发(概述) 智能电视之视觉设计和体验分析

         转载说明出处 :http://blog.csdn.net/sk719887916, 作者:skay 前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家居,以及可穿戴设备的大 ...

随机推荐

  1. 使用 纯JQuery 进行 表单 验证

    对于JavaScript而言,进行表单数据的验证可谓是很有必要的,而且一般我们都会在网页上先进行一下表单验证,然后服务器端再次进行验证,来确保用户提交数据的准确性.下面就来分享一个JQuery实现的表 ...

  2. win32贪吃蛇实现

    写程序是一个循序渐进的过程,一开始都是加加减减,修修补补,这和我们做企业做创新的原理都是一样的,没有一蹴而就的成功,最近看了周鸿祎的<我的互联网方法论>蛮有启发,分享给大家几句摘抄: 1. ...

  3. SQL 数据库语言分析总结(二)

    介绍sql语言 我们接着一的顺序继续介绍这个语言 数据类型 整形: TINYINT(8位) SMALLINT(16位) MEDIUMINT(24位) INT(32位) BIGINT(64位) 实数: ...

  4. UNIX网络编程——epoll的 et,lt关注点

           epoll模型有两种工作模式,ET和LT两种模式下都有一些细节值得注意,以下是一些思考:   一.ET模式下 Q1:调用accept时,到底TCP完成队列里有多少个已经建立好的连接? 这 ...

  5. (NO.00005)iOS实现炸弹人游戏(十一):怪物之火精灵

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 从本篇开始我们一次介绍一下游戏中敌人的制作过程.看过第一篇的小 ...

  6. Java并发框架——同步状态的管理

    整个AQS框架核心功能都是围绕着其32位整型属性state进行,一般可以说它表示锁的数量,对同步状态的控制可以实现不同的同步工具,例如闭锁.信号量.栅栏等等.为了保证可见性此变量被声明为volatil ...

  7. 消息字节——MessageBytes

    在tomcat核心处理中有这么一个需求--"为了提高编码性能,对于socket接收到的字节流不马上进行某种编码的转码,而是应该保留字节流的形式,在需要时.在指定编码时才进行转码工作" ...

  8. Hessian源码分析--HessianProxy

    在上一篇博客 Hessian源码分析--HessianProxyFactory 中我们了解到,客户端获得的对象其实是HessianProxy生成的目标对象,当调用目标对象的方法时,会调用Hessian ...

  9. java常用IO流集合用法模板

    package com.fmy; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import jav ...

  10. Zeroc Ice原理介绍

    Ice介绍         Ice(Internet Communications Engine)是ZeroC公司的杰作,继承了CORBA的血统,是新一代的面向对象的分布式系统中间件.Ice是RPC通 ...