今天想学flash as3 网上找到硅谷动力的教程,看了一下还可以,准备下载,但是这个只能一个一个的下载,我日哦,这个也太麻烦了,马上抄家伙,打开VS,然后看了一下网页的源码,这些链接地址有点规律, 马上想到 通过查找链接,把链接下载下来,然后复制到迅雷下载,
首先我通过WebClient类把网页的源码下载了下来
///这个去下载的函数
private string down(string url)
{
string str = url;
using (WebClient client = new WebClient())
{
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
Stream data = client.OpenRead(str);
using (StreamReader reader = new StreamReader(data, Encoding.Default))
{
string s = reader.ReadToEnd();
return s;
}
}
}
///这里创建了一个线程函数
private void Therd()
{
int i = 1;
for (; i < 65; i++)
{
string str = "http://www.enet.com.cn/eschool/video/flashactionscrip3/";
var s = this.down(str + i + ".shtml");
File.AppendAllText("d:/url/url.txt", Doit(s).Replace("\">\r\n", ""), Encoding.Default);
CompressAll(i);
if (i % 4 == 0)
{
Thread.Sleep(1);
}
else
{
Thread.Sleep(1000);
}
}
}
我对界面小小的美话了一下,做成了专门下载他们网站内容的小工具,加了一进度条
建立委托函数 更新界面
private delegate void DelegateWriteResult(int i, bool result);
// 与定义的委托签名相同的函数,操作主线程控件
private void WriteResult(int i, bool result)
{
if (result)
{
progressBar1.Value = i;
progressBar1.Refresh();
float ii = Convert.ToSingle(i / (progressBar1.Maximum * 0.01));
textBox1.Text = i.ToString();
label1.Text = "已完成:" + ii.ToString("F2") + "%";
if (i == progressBar1.Maximum)
{
label1.Text = "已完成:" + 100 + "%";
}
label1.Refresh();
this.Refresh();
}
else
{
therds.Abort();
this.Refresh();
}
}
// 启动线程
// 线程执行函数
private void CompressAll(int i)
{
// 判断是否需要Invoke,多线程时需要
if (this.InvokeRequired)
{
// 通过委托调用写主线程控件的程序,传递参数放在object数组中
this.Invoke(new DelegateWriteResult(WriteResult), new object[] { i, true });
}
else
{
// 如果不需要委托调用,则直接调用
this.WriteResult(i, true);
}
}
private void Therd()
{
int i = 1;
for (; i < 65; i++)
{
string str = "http://www.enet.com.cn/eschool/video/flashactionscrip3/";
var s = this.down(str + i + ".shtml");
File.AppendAllText("d:/url/url.txt", Doit(s).Replace("\">\r\n", ""), Encoding.Default);
CompressAll(i);
if (i % 4 == 0)
{
Thread.Sleep(1);
}
else
{
Thread.Sleep(1000);
}
}
}
下面这个执行按钮 :
private Thread therds = null;
private void button1_Click(object sender, EventArgs e)
{
therds = new System.Threading.Thread(new System.Threading.ThreadStart(Therd));
therds.Start();
therds.DisableComObjectEagerCleanup();
therds.Name = "down";
while (!therds.IsAlive)
{
therds.Abort();
}
private Thread therds = null;
private void button1_Click(object sender, EventArgs e)
{
therds = new System.Threading.Thread(new System.Threading.ThreadStart(Therd));
therds.Start();
therds.DisableComObjectEagerCleanup();
therds.Name = "down";
while (!therds.IsAlive)
{
therds.Abort();
}
}
private string Doit(string inStr, string str = "http://images.enet.com.cn/eschool/flashactionscrip3")
{
int strStart = inStr.IndexOf(str);
return inStr.Substring(strStart, str.Length + 20);
}