首页 新闻 搜索 专区 学院

.net怎么抓取土豆、搜狐、奇艺视频的分享链接?

0
悬赏园豆:200 [待解决问题]

我现在要做一个视频分享的功能,用户输入一个视频的链接(浏览器上的HTML的地址,而不是分享链接的地址),我用程序去抓取那个链接上面的网页内容,然后用正则表达式去匹配视频的分享链接,现在优酷、酷6、音悦台这三个可以抓取到,但是土豆、搜狐、奇艺这三个还是抓不到,因为网页上根本就没有分享的链接。哪位高手做过这类功能的,请多多指教。

我的部分代码:

 #region  获取视频的路径
//获取视频的路径
protected void checkvideo(string v)
{
try
{
string txt = v.ToLower().Trim();
WebRequest wb = WebRequest.Create(texturl);
WebResponse wbs = wb.GetResponse();
StreamReader sr = new StreamReader(wbs.GetResponseStream(), Encoding.GetEncoding("gb2312"));
string s = sr.ReadToEnd();
if (texturl.Contains("youku"))
{
string patrn1 = @"<embed src=""(?<content>[\s\S]*?)""";
fanhui= searchExp(s, patrn1);
}
if (texturl.Contains("ku6"))
{
string patrn1 = @"<input class=""text_A"" value=""(?<content>[\s\S]*?)""";
fanhui = searchExp(s, patrn1);
}
if (texturl.Contains("yinyuetai"))
{
string patrn1 = @"<input type=""text"" class=""code_text"" id=""flashCode"" value='(?<content>[\s\S]*?)'";
fanhui = searchExp(s, patrn1);
}
sr.Close();
sr.Dispose();
wbs.Close();
}
catch (Exception ex)
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "信息提示", "<script>alert('" + ex + "')</script>");
}
}
#endregion

#region 正则表达式匹配视频路径
private string searchExp(string strng, string patrn)
{
Regex re = new Regex(@patrn);
MatchCollection mc = re.Matches(strng);
string fileUrl = "";
foreach (Match m in mc)
{
fileUrl = m.Groups["content"].ToString();
}
return fileUrl;
}
#endregion
√豬…兒ぷ→的主页 √豬…兒ぷ→ | 初学一级 | 园豆:2
提问于:2012-03-29 14:58
< >
分享
所有回答(3)
0

比如土豆的某视频:http://www.tudou.com/abc.html,这个页面上的视频可以被分享到“人人”,“开心”,“新浪微博”,那么加载这个页面的时候完全可以不把这些分享按钮渲染出来,而是通过js在用户的浏览器上把这些按钮再渲染出来,这是很正常的做法,可以减小服务器压力。你用WebRequest去抓,得到的只是渲染前的页面源码,而不是js执行后的效果,因此这么做你是不可能得到分享链接的。你为何这么执着要在页面上得到分享链接呢,这些站的分享接口都是固定的,本质都是类似:http://share.example.com/url=http://www.resource.com/video.html。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-03-29 17:40
0

土豆的是免费提供API接口的

祥叔 | 园豆:208 (菜鸟二级) | 2012-03-29 21:04
0

嘿嘿。。。

我弄过土豆的,关注学习一下

咸鱼公子 | 园豆:188 (初学一级) | 2012-03-30 12:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册