📄 videoinfoparser.java
字号:
pageParser=Parser.createParser(midClearNL.toHtml(), Constant.CHARSET_GB2312);
NodeList pNL=pageParser.parse(FILTER_P);
if(pNL !=null && pNL.size()>0){
Node pNode=pNL.elementAt(0);
pageParser=Parser.createParser(pNode.toHtml(), Constant.CHARSET_GB2312);
NodeList aNL=pageParser.parse(FILTER_A);
if(aNL !=null && aNL.size()>0){
LinkTag link=(LinkTag) aNL.elementAt(0); //主播
System.out.println("主播 :"+link.getLinkText());
}
Node pNode2=pNL.elementAt(1); //头衔
if(pNode2 !=null && !pNode2.equals("")){
String str2=pNode2.getChildren().elementAt(0).getText();
System.out.println("头衔 :"+str2.substring(str2.indexOf(":")+1));
videoinfo.setHeadTitle(str2.substring(str2.indexOf(":")+1));
}
Node pNode3=pNL.elementAt(2); // 鲜花数
pageParser=Parser.createParser(pNode3.toHtml(), Constant.CHARSET_GB2312);
NodeList spanNL=pageParser.parse(FILTER_SPAN);
if(spanNL !=null && spanNL.size()>0){
Node spanNode=spanNL.elementAt(0);
System.out.println("鲜花数:"+spanNode.getFirstChild().getText());
videoinfo.setFlowerNub(Integer.parseInt(spanNode.getFirstChild().getText()));
}
Node pNode5=pNL.elementAt(15); // falsh地址
if(pNode5 !=null && !pNode5.equals("")){
pageParser=Parser.createParser(pNode5.toHtml(), Constant.CHARSET_GB2312);
NodeList inputNL=pageParser.parse(FILTER_INPUT);
if(inputNL !=null && inputNL.size()>0){
InputTag input=(InputTag)inputNL.elementAt(0);
System.out.println("falsh地址:"+input.getAttribute("value"));
videoinfo.setFlashAddress(input.getAttribute("value"));
}
}
}
pageParser=Parser.createParser(page, Constant.CHARSET_GB2312);
NodeList morevinfoNL=pageParser.parse(FILTER_DIV_MOREVINFO);
if(morevinfoNL !=null && morevinfoNL.size()>0){
Node node=morevinfoNL.elementAt(0);
if(node !=null ){
String str2=node.getChildren().elementAt(0).getText(); //主播简介
System.out.println("主播简介 :"+str2.substring(str2.indexOf(":")+1));
videoinfo.setIntroduction(str2.substring(str2.indexOf(":")+1));
String str3=node.getChildren().elementAt(2).getText(); //上传时间
System.out.println("上传时间 :"+str3.substring(str3.indexOf(":")+1));
videoinfo.setUploadTime(new MySuperDate(str3.substring(str3.indexOf(":")+1),false).getDate());
}
}
}
} catch (ParserException e) {
e.printStackTrace();
}
}
return videoinfo;
}
/**
* 导演(Director)信息
*/
/* private static VideoInformation directorParse(String url){
String page =HttpUtil.request(url, Constant.CHARSET_GB2312);
VideoInformation videoinfo = new VideoInformation();
if( page !=null ){
Parser pageParser = Parser.createParser(page, Constant.CHARSET_GB2312);
try {
NodeList nl = pageParser.parse(FILTER_P_CONTENT) ;
pageParser = Parser.createParser(nl.toHtml(), Constant.CHARSET_GB2312);
NodeList ddNL = pageParser.parse(FILTER_DD) ;
if(ddNL !=null && ddNL.size()>0){
System.out.println(spanNL.elementAt(0).getChildren().elementAt(1).toPlainTextString());
System.out.println(spanNL.elementAt(1).getChildren().elementAt(1).toPlainTextString());
Node ddNode=ddNL.elementAt(0); //导演名称
if(ddNode != null){
System.out.println("名称: "+ddNode.getChildren().elementAt(1).toPlainTextString());
}
Node ddNode2=ddNL.elementAt(1); //导演头衔
if(ddNode2 != null){
System.out.println("头衔: "+ddNode2.getChildren().elementAt(1).toPlainTextString());
videoinfo.setHeadTitle(ddNode2.getChildren().elementAt(1).toPlainTextString());
}
Node ddNode3=ddNL.elementAt(2); //勋章数
pageParser = Parser.createParser(ddNode3.toHtml(), Constant.CHARSET_GB2312);
NodeList spanNL = pageParser.parse(FILTER_SPAN);
if(spanNL !=null && spanNL.size()>0){
Node spanNode = spanNL.elementAt(2);
System.out.println("勋章数: "+spanNode.getChildren().elementAt(0).toPlainTextString());
videoinfo.setFlowerNub(Integer.parseInt(spanNode.getChildren().elementAt(0).toPlainTextString()));
}
Node ddNode4=ddNL.elementAt(3); //人气
if(ddNode4 !=null){
System.out.println("人气 :"+ddNode4.getChildren().elementAt(2).toPlainTextString());
videoinfo.setVideoTitle(ddNode4.getChildren().elementAt(2).toPlainTextString());
}
}
pageParser = Parser.createParser(page, Constant.CHARSET_GB2312);
NodeList vinfoNL = pageParser.parse(FILTER_DIV_VINFO) ;
pageParser = Parser.createParser(vinfoNL.toHtml(), Constant.CHARSET_GB2312);
NodeList pNL = pageParser.parse(FILTER_P) ;
if( pNL !=null && pNL.size()>0){
Node pNode=pNL.elementAt(0); // 简介
if(pNode !=null){
String str=pNode.toPlainTextString();
System.out.println("简介:"+str.substring(str.indexOf(":")+1));
videoinfo.setIntroduction(str.substring(str.indexOf(":")+1));
}
Node pNode2=pNL.elementAt(1); //上传日期
if(pNode2 !=null){
String str=pNode2.toPlainTextString();
System.out.println("上传日期 : "+str.substring(str.indexOf(":")+1));
videoinfo.setUploadTime(new MySuperDate(str.substring(str.indexOf(":")+1),false).getDate());
}
}
VideoInfoService.save(videoinfo);
} catch (ParserException e) {
e.printStackTrace();
}
}
return videoinfo;
}*/
/**
* 抓取视频的标题
*/
private static void titleParse(String page ,VideoInformation videoinfo){
if(page != null){
Parser pageParser = Parser.createParser(page, Constant.CHARSET_GB2312);
try {
NodeList nl = pageParser.parse(FILTER_DIV_TITLE3);
if(nl !=null && nl.size()>0){
videoinfo.setVideoTitle(nl.elementAt(0).getChildren().elementAt(1).toPlainTextString());
System.out.println("标题:"+nl.elementAt(0).getChildren().elementAt(1).toPlainTextString());
}
} catch (ParserException e){
e.printStackTrace();
}
}
}
/**
*
* @param args 一个视频的所有相关专辑信息 抓取一个页面的全部连接
*/
private static void getVideoAlbum(String url){
String page =HttpUtil.request(url, Constant.CHARSET_GB2312);
if(page != null){
Parser pageParser=Parser.createParser(page, Constant.CHARSET_GB2312);
try {
NodeList nl=pageParser.parse(FILTER_DIV_ALBUMIMG);
pageParser=Parser.createParser(nl.toHtml(), Constant.CHARSET_GB2312);
NodeList aNL=pageParser.parse(FILTER_A);
if(aNL !=null && aNL.size()>0){
for(int i=0;i<aNL.size();i++){
Node aNode=aNL.elementAt(i);
if(aNode !=null ){
LinkTag link=(LinkTag) aNode;
System.out.println("视频相关专辑的连接:"+link.getLink());
AlbumInfoParser.parse(link.getLink());
}
}
}
// 专辑图片下载
/*pageParser=Parser.createParser(nl.toHtml(), Constant.CHARSET_GB2312);
NodeList imgNL=pageParser.parse(FILTER_IMG);
if(imgNL !=null && imgNL.size()>0){
for(int i=0;i<imgNL.size();i++){
Node aNode=imgNL.elementAt(i);
if( aNode !=null ){
ImageTag img=(ImageTag) aNode;
System.out.println("专辑图片地址:"+img.getImageURL());
//FileUtil.download(img.getImageURL());
}
}
}*/
} catch (ParserException e) {
e.printStackTrace();
} //catch (DownloadException e) {
//e.printStackTrace();
//}
}
}
/**
*
* @param url 获取视频相关专辑的页数
*/
private static void getVideoAlubmPages(String url){
for(int i=0;i<50;i++){
String url2=url+"&startat="+i*10;
getVideoAlbum(url2);
System.out.println(url2);
}
}
/**
*
* @param args 取得视频相关专辑的[查看全部]的地址 <p class="more">
* 调用 getVideoAlubmPages 方法
*/
public static void getVideoAlbumMore(String url){
String page=HttpUtil.request(url, Constant.CHARSET_GB2312);
if(page != null){
Parser pageParser=Parser.createParser(page, Constant.CHARSET_GB2312);
try {
NodeList nl=pageParser.parse(FILTER_P_MORE);
pageParser=Parser.createParser(nl.elementAt(1).toHtml(), Constant.CHARSET_GB2312);
NodeList aNL=pageParser.parse(FILTER_A);
if(aNL !=null && aNL.size()>0){
LinkTag link=(LinkTag) aNL.elementAt(0);
System.out.println("查看全部专辑地址:"+link.getLink());
getVideoAlubmPages(link.getLink());
}
} catch (ParserException e){
e.printStackTrace();
}
}
}
/**
*
* @param args 查询全部视频的方法
*/
/* public static void findAllVideoAddr(String addr){
System.out.println(VideoInfoService.findByFlashAddr(addr));
}
*/
public static void main(String[] args) {
//http://www.56.com/w25/play_album-aid-6629357_vid-Mzc5NjQ4NjM.html
//parse("http://www.56.com/w25/play_album-aid-6629357_vid-Mzc5NjQ4NjM.html");
//parse("http://www.56.com/u39/v_Mzc5OTQ2NDQ.html");
//directorParse("http://www.56.com/u39/v_Mzc5OTQ2NDQ.html"); // 导演信息
// getVideoAlbum("http://so.56.com/index?type=album&key=%C9%F2%D1%F4+%BA%F3%BA%A3%D2%F4%C0%D6%BD%DA&op=or&sortby=4");
// parse("http://www.56.com/u85/v_MzUzNjQxMDY.html"); // 美女主播
//getVideoAlubmPages("http://so.56.com/index?type=album&key=%C9%F2%D1%F4+%BA%F3%BA%A3%D2%F4%C0%D6%BD%DA&op=or&sortby=4");
// getVideoAlbumMore("http://www.56.com/u51/v_Mzc5ODczNTI.html");
//parse("http://www.56.com/u83/v_MzY3MTIwMDA.html"); //http://www.56.com/u73/v_MzgwMTc5OTg.html
//titleParse("http://www.56.com/u30/v_MzgwODg3MDc.html");
//http://www.56.com/u62/v_Mzc5NDgxMTU.html 雷区
//parse("http://www.56.com/u62/v_Mzc5NDgxMTU.html"); //雷区
// http://www.56.com/u47/v_Mzc5MDEwMjA.html
//parse("http://www.56.com/u83/v_MzM3NTQxNDQ.html");
//http://www.56.com/u66/v_MzYwNjMwNzE.html NBA 视频
//parse("http://www.56.com/u67/v_MzQ3MDQ3MDQ.html");
//http://www.56.com/u62/v_Mzc4NDE0NTk.html 页面错误
//parse("http://www.56.com/u62/v_Mzc4NDE0NTk.html");
//http://www.56.com/u98/v_Mzc4MjI3NTE.html 白领
//parse("http://www.56.com/u45/v_MzYyODgzMzA.html");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -