在前面的流媒体开发之-音悦台TV解析中解析了某一个页的TV视频,但是里面有很多页,如果要解析所有的视频,首先要解析每一页视频的链接,下面解析音悦台的视频页的链接
首先要明白的是网页里面给出的链接可能没有音悦台的域名,还有就是链接要分为几部分来组合,下面是我写的一个类来存储链接的
package com.pigvideo.model; import java.io.Serializable; /** * 用来存储音悦台链接的内容 * Created by jwzhangjie on 13-12-7. */ public class YinYueTaiPageModel implements Serializable{ private static final long serialVersionUID = 1L; /** * 音悦台的域名 */ private String pageStart; /** * 选择页的链接头部 */ private String pageHead; /** * 选择页的链接尾部 */ private String pageEnd; /** * 选择页的数目 */ private int pageNum; public String getPageStart() { return pageStart; } public void setPageStart(String pageStart) { this.pageStart = pageStart; } public String getPageHead() { return pageHead; } public void setPageHead(String pageHead) { this.pageHead = pageHead; } public String getPageEnd() { return pageEnd; } public void setPageEnd(String pageEnd) { this.pageEnd = pageEnd; } public int getPageNum() { return pageNum; } public void setPageNum(int pageNum) { this.pageNum = pageNum; } }
接下来就是去解析网页中存储页码的html部分
/** * 获取当前选择的TV类型的页数 */ public YinYueTaiPageModel getYinYueTaiPage(String url){ YinYueTaiPageModel yinYueTaiPageModel = new YinYueTaiPageModel(); try { Document doc = Jsoup.connect(url).get(); Element page_nav = doc.getElementById("pageNav"); Element onePage = page_nav.getElementsByTag("a").first(); String href = onePage.attr("href"); if ("http://mv.yinyuetai.com/".indexOf(href) == -1) { yinYueTaiPageModel.setPageStart("http://mv.yinyuetai.com/"); }else { yinYueTaiPageModel.setPageStart(""); } String[] temp = href.split(onePage.text()); yinYueTaiPageModel.setPageHead(temp[0]); yinYueTaiPageModel.setPageEnd(temp[1]); Elements Pages = page_nav.select("span.separator"); for (Element element : Pages) { if (element.text().indexOf("页") != -1) { StringBuilder pages = new StringBuilder(); pages.append(element.text()); String numString = pages.substring(1, pages.length()-1); try { yinYueTaiPageModel.setPageNum(Integer.parseInt(numString)); } catch (Exception e) { yinYueTaiPageModel.setPageNum(0); e.printStackTrace(); } } } } catch (Exception e) { e.printStackTrace(); } return yinYueTaiPageModel; }
下面一章会整合这两部分来实现解析所有选择条件的TV视频