正文
1. 截图
2. 使用步骤
2.1 右键含有新浪视频的网页打开源代码,比如http://www.dapenti.com/blog/more.asp?name=xilei&id=18466s。如果被屏蔽可以考虑换Opera和Chrome浏览器。
2.2 搜索关键字.swf,找到embed标签的src属性,复制连接到软件输入框内。
2.3 点击开始下载。由于有些文件比较大,下载时间可能超过30秒,但是没有关系,这里采用的异步,你只需要最小化或者点击右上角关闭缩小到右下角再去干自己的事情就行了:)
2.4 退出软件请点击红色感叹号的图标按钮!
2.5 2009-4-25补充,如果是类似于http://you.video.vnet.cn/b/11689006-1234029735.html这样的链接,只有后面部分11689006-1234029735.html不同的话,可以直接用http://you.video.vnet.cn/swf/player.swf?vid=11689006-1234029735来下载,即“vid=”前面的链接是一样的,而vid后面的值就是页面的伪名称,即这里的 11689006-1234029735。
3. 部分代码
看过我图片下载器的朋友对这部分代码应该还是比较熟悉了,下载有附带源码。
代码片段1
//
异步下载文件
HttpWebRequest hwr = WebRequest.Create(nUrl) as HttpWebRequest;
hwr.AllowWriteStreamBuffering = false ;
hwr.AllowAutoRedirect = true ;
// hwr.ReadWriteTimeout = 5 * 1000; // 默认超时5分钟
hwr.BeginGetResponse( new AsyncCallback(AsyncDownLoadResult), hwr);
HttpWebRequest hwr = WebRequest.Create(nUrl) as HttpWebRequest;
hwr.AllowWriteStreamBuffering = false ;
hwr.AllowAutoRedirect = true ;
// hwr.ReadWriteTimeout = 5 * 1000; // 默认超时5分钟
hwr.BeginGetResponse( new AsyncCallback(AsyncDownLoadResult), hwr);
代码片段2
WebRequest request
=
(WebRequest)asyncResult.AsyncState;
string url = request.RequestUri.ToString();
try
{
WebResponse response = request.EndGetResponse(asyncResult);
if (response.ContentLength > 0 )
{
if ( ! Directory.Exists(tbSavePath.Text.Trim()))
Directory.CreateDirectory(tbSavePath.Text.Trim());
using (Stream stream = response.GetResponseStream())
{
using (FileStream fs = File.Create(Path.Combine(tbSavePath.Text.Trim(), Path.GetFileName(url))))
{
byte [] bytes = new byte [ 10240 ];
int n = 1 ;
while (n > 0 )
{
n = stream.Read(bytes, 0 , 10240 );
fs.Write(bytes, 0 , n);
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
string url = request.RequestUri.ToString();
try
{
WebResponse response = request.EndGetResponse(asyncResult);
if (response.ContentLength > 0 )
{
if ( ! Directory.Exists(tbSavePath.Text.Trim()))
Directory.CreateDirectory(tbSavePath.Text.Trim());
using (Stream stream = response.GetResponseStream())
{
using (FileStream fs = File.Create(Path.Combine(tbSavePath.Text.Trim(), Path.GetFileName(url))))
{
byte [] bytes = new byte [ 10240 ];
int n = 1 ;
while (n > 0 )
{
n = stream.Read(bytes, 0 , 10240 );
fs.Write(bytes, 0 , n);
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/586449,如需转载请自行联系原作者