在前面的流媒体开发之-音悦台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视频