`
sunlightcs
  • 浏览: 73045 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

通过JAVA获取优酷视频

阅读更多
通过JAVA获取优酷视频,现在很多社会网站都有这个功能,用户输入优酷视频地址后,能找到对应的视频及视频的缩略图,有些社区网站还能获取到视频的时长。
比如:新浪微博就有这个功能,当用户输入视频网址后,就能获取到相应的视频地址及视频的缩略图。
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;


/**
* 获取优酷视频
* @author sunlightcs
* 2011-3-29
* http://hi.juziku.com/sunlightcs/
*/
public class VideoTest {

	public static void main(String[] args) throws Exception{
		String pic = getElementAttrById("s_sina", "href");
		int local = pic.indexOf("pic=");
		pic = pic.substring(local+4);
		System.out.println("视频缩略图:"+pic);
		
		
		String flashUrl = getElementAttrById("link2", "value");
		System.out.println("视频地址:"+flashUrl);
		
		
		String time = getElementAttrById("download", "href");
		String []arrays = time.split("\\|");
		time = arrays[4];
		System.out.println("视频时长:"+time);
		
	}
	
	
	/**
	 * 根据HTML的ID键及属于名,获取属于值
	 * @param id  HTML的ID键
	 * @param attrName  属于名
	 * @return  返回属性值
	 */
	private static String getElementAttrById(String id, String attrName)throws Exception{
		Document doc = getURLContent();
		Element et = doc.getElementById(id);
		String attrValue = et.attr(attrName);
		
		return attrValue;
	}
	

	
	/**
	 * 获取优酷网页的内容
	 */
	private static Document getURLContent() throws MalformedURLException, IOException, UnsupportedEncodingException {
		Document doc = Jsoup.connect("http://v.youku.com/v_show/id_XMjU0MjI2NzY0.html")
		  .data("query", "Java")
		  .userAgent("Mozilla")
		  .cookie("auth", "token")
		  .timeout(3000)
		  .post();
		return doc;
	}

}


全文请访问:http://www.juziku.com/wiki/711.htm

分享到:
评论
26 楼 sunlightcs 2011-04-20  
何处烤地瓜 写道
喜欢Java的女生跟喜欢DOTA的女生     都挺好的

25 楼 何处烤地瓜 2011-04-20  
喜欢Java的女生跟喜欢DOTA的女生     都挺好的
24 楼 sunlightcs 2011-04-15  
java_user 写道
可能是为了减轻服务器负载和便于检索,一些大的视频确实可能是分段的

是的,一般视频网站都是这样处理的。
23 楼 java_user 2011-04-14  
可能是为了减轻服务器负载和便于检索,一些大的视频确实可能是分段的
22 楼 neal 2011-04-14  
sunlightcs 写道
neal 写道
貌似真正的视频源是http://xxxx.flv,有没有办法把这个解析出来

一个视频,是由很多个flv文件组成的,一般都不用这些文件了。

有些工具能下载flv视频的视频,难道是将多个flv拼起来的?
21 楼 sunlightcs 2011-04-13  
neal 写道
貌似真正的视频源是http://xxxx.flv,有没有办法把这个解析出来

一个视频,是由很多个flv文件组成的,一般都不用这些文件了。
20 楼 neal 2011-04-13  
貌似真正的视频源是http://xxxx.flv,有没有办法把这个解析出来
19 楼 sunlightcs 2011-04-07  
449302900 写道
呵呵,学习了!!以前都没见过、、

共同学习,
18 楼 449302900 2011-04-07  
呵呵,学习了!!以前都没见过、、
17 楼 yuanfeng_dong 2011-04-07  
楼主头像是亮点  楼主很漂亮,不要做这行了,找个有钱的嫁了吧!
16 楼 sunlightcs 2011-04-06  
spaljay 写道
很有用的jar包

呵呵   是的了,蛮好用的。
15 楼 spaljay 2011-04-06  
很有用的jar包
14 楼 sunlightcs 2011-04-05  
htj1231825 写道
那天看见一个 获取土豆视频,今天又出来一个优酷的。。。orz

常见的视频网站,都有相应的代码,在我的博客里了。

有时间,把这些代码整理一下。
13 楼 htj1231825 2011-04-05  
那天看见一个 获取土豆视频,今天又出来一个优酷的。。。orz
12 楼 housheng33 2011-04-05  
很不错啊,
有雷锋精神
11 楼 sunlightcs 2011-04-04  
liuxinglanyue 写道
原来还有 jsoup 这个东东,学到了。我是用httpclient+正则的

这个很方便的,呵呵
10 楼 liuxinglanyue 2011-04-04  
原来还有 jsoup 这个东东,学到了。我是用httpclient+正则的
9 楼 sunlightcs 2011-04-04  
happysoul 写道
问题:
getElementAttrById方法中调用getURLContent()方法返回Document
每次调用取Id对应对象的方法都会重新访问Url

试验方法:63行 return doc; 前面加上System.out.println(doc);
细看就能知道网络访问了3次youku的url

感觉只是照着jsoup例子把代码堆叠在一起而已~~

代码没有做优化了,只是一个例子。
8 楼 txin0814 2011-04-04  
jsoup 好东西呀
7 楼 sam_chi 2011-04-04  
jsoup解析HTML感觉很赞!

相关推荐

Global site tag (gtag.js) - Google Analytics