您的位置:首页 > 其它

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

2014-10-13 18:12 399 查看
载请标明出处:/article/1366058.html,作者: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐