载请标明出处: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开发(七) 移动智能终端多媒体之在线解析网页视频源的更多相关文章
-
安卓TV开发(八) 移动智能终端多媒体爬虫技术 获取加载网页视频源
转载请标明出处:http://blog.csdn.net/sk719887916/article/details/40049137,作者:skay 从上一篇学习中,学习了多媒体技术中的怎么去用josu ...
-
安卓TV开发(五) 移动智能终端UI之实现主流TV焦点可控UI
载请标明出处:http://blog.csdn.net/sk719887916,作者:skay 由于其他网站收录,导致你无法查看本系列原创文章请点击此处 安卓TV开发(四)实现主流智能T ...
-
安卓TV开发(六) 移动智能终端UI之实现类似GridView的焦点控制FocusView框架
转载请标明出处:http://blog.csdn.net/sk719887916/article/details/40045089,作者:skay 前言 安卓TV开发(五) 移动智能终端UI之实现主流 ...
-
安卓TV开发(十) 智能电视开发之在线视频直播
转载注明出处:http://blog.csdn.net/sk719887916/article/details/46582987 从<安卓TV开发(八) 移动智能终端多媒体之在线加载网页视频源& ...
-
安卓Tv开发(一)移动智能电视之焦点控制(触控事件)
前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家居,以及可穿戴设备的大量使用,但是这些设备上的开发并不是和传统手机开发一样,特别是焦点控制和用户操作体验风格上有很大的区别,本系列博 ...
-
安卓TV开发(四) 实现主流智能TV视频播放器UI
前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家居,以及可穿戴设备的大量使用,但是这些设备上的开发并不是和传统手机开发一样,特别是焦点控制和用户操作体验上有很大的区别,本系列博文主 ...
-
安卓TV开发(三) 移动智能设备之实现主流TV电视盒子焦点可控UI
前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家居,以及可穿戴设备的大量使用,但是这些设备上的开发并不是和传统手机开发一样,特别是焦点控制和用户操作体验上有很大的区别,本系列博文主 ...
-
安卓Tv开发(二)移动智能电视之焦点控制(按键事件)
原文:http://blog.csdn.net/sk719887916/article/details/44781475 skay 前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家 ...
-
安卓TV开发(概述) 智能电视之视觉设计和体验分析
转载说明出处 :http://blog.csdn.net/sk719887916, 作者:skay 前言:移动智能设备的发展,推动了安卓另一个领域,包括智能电视和智能家居,以及可穿戴设备的大 ...
随机推荐
-
[HTML/HTML5]5 使用链接
5.1 添加指向其它Web页面的链接 无论目标Web页面是否属于你网站的一部分,还是属于其它网站,都可以添加指向其它Web页面的链接.只需要用<a>就可以添加链接. <a href ...
-
写了一个简单的NodeJS实现的进程间通信的例子
1. cluster介绍 大家都知道nodejs是一个单进程单线程的服务器引擎,不管有多么的强大硬件,只能利用到单个CPU进行计算.所以,有人开发了第三方的cluster,让node可以利用多核CPU ...
-
决策树及其python实现
剪枝 由于悲观错误剪枝 PEP (Pessimistic Error Pruning).代价-复杂度剪枝 CCP (Cost-Complexity Pruning).基于错误剪枝 EBP (Error ...
-
python中 __name__及__main()__的使用
python中 __name__及__main()__的使用 #hello.py def sayHello(): str="hello" print(str); if __name ...
-
Jsunpack
http://www.baidu.com/#wd=jsunpack&rsv_bp=0&tn=baidu&rsv_spt=3&ie=utf-8&rsv_sug3= ...
-
物流进程html+css页面
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> & ...
-
实现ThreadFactory接口生成自定义的线程给Fork/Join框架
Fork/Join框架是Java7中最有趣的特征之一.它是Executor和ExecutorService接口的一个实现,允许你执行Callable和Runnable任务而不用管理这些执行线程.这个执 ...
-
Python实现邮件的批量发送
Python实现邮件的批量发送 1 发送文本信息 '''加密发送文本邮件''' def sendEmail(from_addr,password,to_addr,smtp_server): try: ...
-
【SVN】Linux搭建SVN服务
1.yum安装svn yum install -y subversion 日志打印 Loaded plugins: fastestmirror Determining fastest mirrors ...
-
【LESS系列】一些常用的Mixins
在我们平时的开发中,对于一些使用频率很高的方法函数,我们一般都会将其归纳到一起,整理出一个核心库来. 其实这个思想,借助 LESS 也可以在 CSS 中得以实现. 下面是几个在 W3CPLUS 中偷过 ...