慢速VOA的下载!
看到上次一个圆子里的弟兄提到的慢速VOA,感觉还不错,但是不想一个一个下载,所以写了段代码。
好长时间都不写代码了,手生了!
现在写代码都是为了自己用!让高手见笑了!
  1 using System;
using System;
2 using System.Collections.Generic;
using System.Collections.Generic;
3 using System.ComponentModel;
using System.ComponentModel;
4 using System.Data;
using System.Data;
5 using System.Drawing;
using System.Drawing;
6 using System.Text;
using System.Text;
7 using System.Windows.Forms;
using System.Windows.Forms;
8 using System.Net;
using System.Net;
9 using System.IO;
using System.IO;
10 using System.Text.RegularExpressions;
using System.Text.RegularExpressions;
11
12 namespace VOA
namespace VOA
13 {
{
14 public delegate void DelegateProgressBarPerformStep(long i);
    public delegate void DelegateProgressBarPerformStep(long i);
15 public partial class Form1 : Form
    public partial class Form1 : Form
16 {
    {
17 public DelegateProgressBarPerformStep DelegateProgressBarPerformStep;
        public DelegateProgressBarPerformStep DelegateProgressBarPerformStep;
18 long iConLength;
        long iConLength;
19 public Form1()
        public Form1()
20 {
        {
21 InitializeComponent();
            InitializeComponent();
22 }
        }
23
24 public void ProgressBarPerformStep(long i)
        public void ProgressBarPerformStep(long i)
25 {
        {
26 this.Text = "Processing
            this.Text = "Processing " + string.Format("Finished:  {0} / {1}", i , iConLength);
" + string.Format("Finished:  {0} / {1}", i , iConLength);
27 }
        }
28
29 private void btnGetList_Click(object sender, EventArgs e)
        private void btnGetList_Click(object sender, EventArgs e)
30 {
        {
31 GetList(textBox1.Text);
            GetList(textBox1.Text);
32 }
        }
33
34 private void button1_Click(object sender, EventArgs e)
        private void button1_Click(object sender, EventArgs e)
35 {
        {
36 DownLoad(listView1.SelectedItems[0].SubItems[1].Text, listView1.SelectedItems[0].Text);
            DownLoad(listView1.SelectedItems[0].SubItems[1].Text, listView1.SelectedItems[0].Text);
37 }
        }
38
39 private void GetList(string strUrl)
        private void GetList(string strUrl)
40 {
        {
41 string strHtml = String.Empty;
            string strHtml = String.Empty;
42 HttpWebRequest rt = null;
            HttpWebRequest rt = null;
43 HttpWebResponse rs = null;
            HttpWebResponse rs = null;
44 Stream stream = null;
            Stream stream = null;
45 StreamReader sr = null;
            StreamReader sr = null;
46 string temp = string.Empty;
            string temp = string.Empty;
47
48
49 try
            try
50 {
            {
51 rt = (HttpWebRequest)WebRequest.Create(strUrl);
                rt = (HttpWebRequest)WebRequest.Create(strUrl);
52 rs = (HttpWebResponse)rt.GetResponse();
                rs = (HttpWebResponse)rt.GetResponse();
53 stream = rs.GetResponseStream();
                stream = rs.GetResponseStream();
54 sr = new StreamReader(stream, Encoding.UTF8);
                sr = new StreamReader(stream, Encoding.UTF8);
55 strHtml = sr.ReadToEnd();
                strHtml = sr.ReadToEnd();
56 }
            }
57 catch (Exception ee)
            catch (Exception ee)
58 {
            {
59 MessageBox.Show("发生异常" + ee.Message);
                MessageBox.Show("发生异常" + ee.Message);
60 }
            }
61 finally
            finally
62 {
            {
63 sr.Close();
                sr.Close();
64 stream.Close();
                stream.Close();
65 rs.Close();
                rs.Close();
66 }
            }
67
68 string regexStr = "";
            string regexStr = "";
69 int counter = 0;
            int counter = 0;
70 int i = 0;
            int i = 0;
71 string strKey = "";
            string strKey = "";
72 string strText = "";
            string strText = "";
73 try
            try
74 {
            {
75 regexStr = @"\<a href=.*\w{4}\-\w{2}\-\w{2}";
                regexStr = @"\<a href=.*\w{4}\-\w{2}\-\w{2}";
76 temp = "";
                temp = "";
77 counter = 0;
                counter = 0;
78 MatchCollection mc = Regex.Matches(strHtml, regexStr);
                MatchCollection mc = Regex.Matches(strHtml, regexStr);
79 counter = mc.Count;
                counter = mc.Count;
80 for (i = 0; i < counter; ++i)
                for (i = 0; i < counter; ++i)
81 {
                {
82 temp = mc[i].ToString();
                    temp = mc[i].ToString();
83 strKey = temp.Substring(9, 13);
                    strKey = temp.Substring(9, 13);
84 strKey = "http://bulo.hjenglish.com" + strKey;
                    strKey = "http://bulo.hjenglish.com" + strKey;
85 int itemp = temp.IndexOf("【慢速VOA】");
                    int itemp = temp.IndexOf("【慢速VOA】");
86
87 strText = temp.Substring(itemp);
                    strText = temp.Substring(itemp);
88 listView1.Items.Add(strText);
                    listView1.Items.Add(strText);
89 listView1.Items[i].SubItems.Add(strKey);
                    listView1.Items[i].SubItems.Add(strKey);
90 }
                }
91 mc = null;
                mc = null;
92 }
            }
93 catch (Exception ee)
            catch (Exception ee)
94 {
            {
95 MessageBox.Show(ee.Message);
                MessageBox.Show(ee.Message);
96 }
            }
97 }
        }
98
99 private void DownLoad(string strUrl, string strFile)
        private void DownLoad(string strUrl, string strFile)
100 {
        {
101 string strHtml = String.Empty;
            string strHtml = String.Empty;
102 HttpWebRequest rt = null;
            HttpWebRequest rt = null;
103 HttpWebResponse rs = null;
            HttpWebResponse rs = null;
104 Stream stream = null;
            Stream stream = null;
105 StreamReader sr = null;
            StreamReader sr = null;
106 string temp = string.Empty;
            string temp = string.Empty;
107
108
109 try
            try
110 {
            {
111 rt = (HttpWebRequest)WebRequest.Create(strUrl);
                rt = (HttpWebRequest)WebRequest.Create(strUrl);
112 rs = (HttpWebResponse)rt.GetResponse();
                rs = (HttpWebResponse)rt.GetResponse();
113 stream = rs.GetResponseStream();
                stream = rs.GetResponseStream();
114 sr = new StreamReader(stream, Encoding.UTF8);
                sr = new StreamReader(stream, Encoding.UTF8);
115 strHtml = sr.ReadToEnd();
                strHtml = sr.ReadToEnd();
116 }
            }
117 catch (Exception ee)
            catch (Exception ee)
118 {
            {
119 MessageBox.Show("发生异常" + ee.Message);
                MessageBox.Show("发生异常" + ee.Message);
120 }
            }
121 finally
            finally
122 {
            {
123 sr.Close();
                sr.Close();
124 stream.Close();
                stream.Close();
125 rs.Close();
                rs.Close();
126 }
            }
127
128 string regexStr = "";
            string regexStr = "";
129 int counter = 0;
            int counter = 0;
130 int i = 0;
            int i = 0;
131
132 GetMP3
            GetMP3
151
152 try
            try
153 {
            {
154 regexStr = @"参考答案:.*";
                regexStr = @"参考答案:.*";
155 temp = "";
                temp = "";
156 counter = 0;
                counter = 0;
157 MatchCollection mc = Regex.Matches(strHtml, regexStr);
                MatchCollection mc = Regex.Matches(strHtml, regexStr);
158 counter = mc.Count;
                counter = mc.Count;
159 for (i = 0; i < counter; ++i)
                for (i = 0; i < counter; ++i)
160 {
                {
161 writeTxt(mc[i].ToString(),strFile);
                    writeTxt(mc[i].ToString(),strFile);
162 }
                }
163 mc = null;
                mc = null;
164 }
            }
165 catch (Exception ee)
            catch (Exception ee)
166 {
            {
167 MessageBox.Show(ee.Message);
                MessageBox.Show(ee.Message);
168 }
            }
169
170 MessageBox.Show("下载完成");
            MessageBox.Show("下载完成");
171 }
        }
172
173 private void writeTxt(string strBody,string strFile)
        private void writeTxt(string strBody,string strFile)
174 {
        {
175 StreamWriter sw;
            StreamWriter sw;
176 try
            try
177 {
            {
178 sw = File.CreateText(strFile + ".txt");//txt文件会创建到跟目录下的BIN→Debug下
                sw = File.CreateText(strFile + ".txt");//txt文件会创建到跟目录下的BIN→Debug下
179 }
            }
180 catch
            catch
181 {
            {
182 Console.WriteLine("不能创建文件!");
                Console.WriteLine("不能创建文件!");
183 return;
                return;
184 }
            }
185
186 sw.Write("{0} ",strBody);
            sw.Write("{0} ",strBody);
187 sw.Close();
            sw.Close();
188
189 }
        }
190
191 private void downloadMP3(string strUrl,string strFile)
        private void downloadMP3(string strUrl,string strFile)
192 {
        {
193 //打开上次下载的文件或新建文件
            //打开上次下载的文件或新建文件
194 long lStartPos =0;
            long lStartPos =0;
195 System.IO.FileStream fs;
            System.IO.FileStream fs;
196 if (System.IO.File.Exists(strFile))
            if (System.IO.File.Exists(strFile))
197 {
            {
198 fs= System.IO.File.OpenWrite(strFile);
                fs= System.IO.File.OpenWrite(strFile);
199 lStartPos=fs.Length;
                lStartPos=fs.Length;
200 fs.Seek(lStartPos,System.IO.SeekOrigin.Current);   //移动文件流中的当前指针
                fs.Seek(lStartPos,System.IO.SeekOrigin.Current);   //移动文件流中的当前指针
201 }
            }
202 else
            else
203 {
            {
204 fs = new System.IO.FileStream(strFile, System.IO.FileMode.Create);
                fs = new System.IO.FileStream(strFile, System.IO.FileMode.Create);
205 lStartPos =0;
                lStartPos =0;
206 }
            }
207
208 long iFinished = lStartPos;
            long iFinished = lStartPos;
209
210 //打开网络连接
            //打开网络连接
211 try
            try
212 {
            {
213 System.Net.HttpWebRequest request =(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(strUrl);
                System.Net.HttpWebRequest request =(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(strUrl);
214
215 if ( lStartPos>0)
                if ( lStartPos>0)
216 request.AddRange((int)lStartPos);    //设置Range值
                    request.AddRange((int)lStartPos);    //设置Range值
217 
                
218 //向服务器请求,获得服务器回应数据流
                //向服务器请求,获得服务器回应数据流
219 System.IO.Stream ns= request.GetResponse().GetResponseStream();
                System.IO.Stream ns= request.GetResponse().GetResponseStream();
220 iConLength = request.GetResponse().ContentLength;
                iConLength = request.GetResponse().ContentLength;
221 byte[] nbytes = new byte[512];
                byte[] nbytes = new byte[512];
222 int nReadSize=0;
                int nReadSize=0;
223 nReadSize=ns.Read(nbytes,0,512);
                nReadSize=ns.Read(nbytes,0,512);
224 
                
225 while( nReadSize >0)
                while( nReadSize >0)
226 {
                {
227 iFinished += nReadSize;
                    iFinished += nReadSize;
228 fs.Write(nbytes,0,nReadSize);
                    fs.Write(nbytes,0,nReadSize);
229 nReadSize=ns.Read(nbytes,0,512);
                    nReadSize=ns.Read(nbytes,0,512);
230 //progressBar1.Invoke(this.DelegateProgressBarPerformStep, new object[] { iFinished });
                    //progressBar1.Invoke(this.DelegateProgressBarPerformStep, new object[] { iFinished });
231 }
                }
232 fs.Close();
                fs.Close();
233 ns.Close();
                ns.Close();
234
235 }
            }
236 catch(Exception ex)
            catch(Exception ex)
237 {
            {
238 fs.Close();
                fs.Close();
239 MessageBox.Show("下载过程中出现错误:"+ex.ToString());
                MessageBox.Show("下载过程中出现错误:"+ex.ToString());
240 }
            }
241 }
        }
242 }
    }
243 }
}
244
 using System;
using System;2
 using System.Collections.Generic;
using System.Collections.Generic;3
 using System.ComponentModel;
using System.ComponentModel;4
 using System.Data;
using System.Data;5
 using System.Drawing;
using System.Drawing;6
 using System.Text;
using System.Text;7
 using System.Windows.Forms;
using System.Windows.Forms;8
 using System.Net;
using System.Net;9
 using System.IO;
using System.IO;10
 using System.Text.RegularExpressions;
using System.Text.RegularExpressions;11

12
 namespace VOA
namespace VOA13
 {
{14
 public delegate void DelegateProgressBarPerformStep(long i);
    public delegate void DelegateProgressBarPerformStep(long i);15
 public partial class Form1 : Form
    public partial class Form1 : Form16
 {
    {17
 public DelegateProgressBarPerformStep DelegateProgressBarPerformStep;
        public DelegateProgressBarPerformStep DelegateProgressBarPerformStep;18
 long iConLength;
        long iConLength;19
 public Form1()
        public Form1()20
 {
        {21
 InitializeComponent();
            InitializeComponent();22
 }
        }23

24
 public void ProgressBarPerformStep(long i)
        public void ProgressBarPerformStep(long i)25
 {
        {26
 this.Text = "Processing
            this.Text = "Processing " + string.Format("Finished:  {0} / {1}", i , iConLength);
" + string.Format("Finished:  {0} / {1}", i , iConLength);27
 }
        }28

29
 private void btnGetList_Click(object sender, EventArgs e)
        private void btnGetList_Click(object sender, EventArgs e)30
 {
        {31
 GetList(textBox1.Text);
            GetList(textBox1.Text);32
 }
        }33

34
 private void button1_Click(object sender, EventArgs e)
        private void button1_Click(object sender, EventArgs e)35
 {
        {36
 DownLoad(listView1.SelectedItems[0].SubItems[1].Text, listView1.SelectedItems[0].Text);
            DownLoad(listView1.SelectedItems[0].SubItems[1].Text, listView1.SelectedItems[0].Text);37
 }
        }38

39
 private void GetList(string strUrl)
        private void GetList(string strUrl)40
 {
        {41
 string strHtml = String.Empty;
            string strHtml = String.Empty;42
 HttpWebRequest rt = null;
            HttpWebRequest rt = null;43
 HttpWebResponse rs = null;
            HttpWebResponse rs = null;44
 Stream stream = null;
            Stream stream = null;45
 StreamReader sr = null;
            StreamReader sr = null;46
 string temp = string.Empty;
            string temp = string.Empty;47

48

49
 try
            try50
 {
            {51
 rt = (HttpWebRequest)WebRequest.Create(strUrl);
                rt = (HttpWebRequest)WebRequest.Create(strUrl);52
 rs = (HttpWebResponse)rt.GetResponse();
                rs = (HttpWebResponse)rt.GetResponse();53
 stream = rs.GetResponseStream();
                stream = rs.GetResponseStream();54
 sr = new StreamReader(stream, Encoding.UTF8);
                sr = new StreamReader(stream, Encoding.UTF8);55
 strHtml = sr.ReadToEnd();
                strHtml = sr.ReadToEnd();56
 }
            }57
 catch (Exception ee)
            catch (Exception ee)58
 {
            {59
 MessageBox.Show("发生异常" + ee.Message);
                MessageBox.Show("发生异常" + ee.Message);60
 }
            }61
 finally
            finally62
 {
            {63
 sr.Close();
                sr.Close();64
 stream.Close();
                stream.Close();65
 rs.Close();
                rs.Close();66
 }
            }67

68
 string regexStr = "";
            string regexStr = "";69
 int counter = 0;
            int counter = 0;70
 int i = 0;
            int i = 0;71
 string strKey = "";
            string strKey = "";72
 string strText = "";
            string strText = "";73
 try
            try74
 {
            {75
 regexStr = @"\<a href=.*\w{4}\-\w{2}\-\w{2}";
                regexStr = @"\<a href=.*\w{4}\-\w{2}\-\w{2}";76
 temp = "";
                temp = "";77
 counter = 0;
                counter = 0;78
 MatchCollection mc = Regex.Matches(strHtml, regexStr);
                MatchCollection mc = Regex.Matches(strHtml, regexStr);79
 counter = mc.Count;
                counter = mc.Count;80
 for (i = 0; i < counter; ++i)
                for (i = 0; i < counter; ++i)81
 {
                {82
 temp = mc[i].ToString();
                    temp = mc[i].ToString();83
 strKey = temp.Substring(9, 13);
                    strKey = temp.Substring(9, 13);84
 strKey = "http://bulo.hjenglish.com" + strKey;
                    strKey = "http://bulo.hjenglish.com" + strKey;85
 int itemp = temp.IndexOf("【慢速VOA】");
                    int itemp = temp.IndexOf("【慢速VOA】");86

87
 strText = temp.Substring(itemp);
                    strText = temp.Substring(itemp);88
 listView1.Items.Add(strText);
                    listView1.Items.Add(strText);89
 listView1.Items[i].SubItems.Add(strKey);
                    listView1.Items[i].SubItems.Add(strKey);90
 }
                }91
 mc = null;
                mc = null;92
 }
            }93
 catch (Exception ee)
            catch (Exception ee)94
 {
            {95
 MessageBox.Show(ee.Message);
                MessageBox.Show(ee.Message);96
 }
            }97
 }
        }98

99
 private void DownLoad(string strUrl, string strFile)
        private void DownLoad(string strUrl, string strFile)100
 {
        {101
 string strHtml = String.Empty;
            string strHtml = String.Empty;102
 HttpWebRequest rt = null;
            HttpWebRequest rt = null;103
 HttpWebResponse rs = null;
            HttpWebResponse rs = null;104
 Stream stream = null;
            Stream stream = null;105
 StreamReader sr = null;
            StreamReader sr = null;106
 string temp = string.Empty;
            string temp = string.Empty;107

108

109
 try
            try110
 {
            {111
 rt = (HttpWebRequest)WebRequest.Create(strUrl);
                rt = (HttpWebRequest)WebRequest.Create(strUrl);112
 rs = (HttpWebResponse)rt.GetResponse();
                rs = (HttpWebResponse)rt.GetResponse();113
 stream = rs.GetResponseStream();
                stream = rs.GetResponseStream();114
 sr = new StreamReader(stream, Encoding.UTF8);
                sr = new StreamReader(stream, Encoding.UTF8);115
 strHtml = sr.ReadToEnd();
                strHtml = sr.ReadToEnd();116
 }
            }117
 catch (Exception ee)
            catch (Exception ee)118
 {
            {119
 MessageBox.Show("发生异常" + ee.Message);
                MessageBox.Show("发生异常" + ee.Message);120
 }
            }121
 finally
            finally122
 {
            {123
 sr.Close();
                sr.Close();124
 stream.Close();
                stream.Close();125
 rs.Close();
                rs.Close();126
 }
            }127

128
 string regexStr = "";
            string regexStr = "";129
 int counter = 0;
            int counter = 0;130
 int i = 0;
            int i = 0;131

132
 GetMP3
            GetMP3151

152
 try
            try153
 {
            {154
 regexStr = @"参考答案:.*";
                regexStr = @"参考答案:.*";155
 temp = "";
                temp = "";156
 counter = 0;
                counter = 0;157
 MatchCollection mc = Regex.Matches(strHtml, regexStr);
                MatchCollection mc = Regex.Matches(strHtml, regexStr);158
 counter = mc.Count;
                counter = mc.Count;159
 for (i = 0; i < counter; ++i)
                for (i = 0; i < counter; ++i)160
 {
                {161
 writeTxt(mc[i].ToString(),strFile);
                    writeTxt(mc[i].ToString(),strFile);162
 }
                }163
 mc = null;
                mc = null;164
 }
            }165
 catch (Exception ee)
            catch (Exception ee)166
 {
            {167
 MessageBox.Show(ee.Message);
                MessageBox.Show(ee.Message);168
 }
            }169

170
 MessageBox.Show("下载完成");
            MessageBox.Show("下载完成");171
 }
        }172

173
 private void writeTxt(string strBody,string strFile)
        private void writeTxt(string strBody,string strFile)174
 {
        {175
 StreamWriter sw;
            StreamWriter sw;176
 try
            try177
 {
            {178
 sw = File.CreateText(strFile + ".txt");//txt文件会创建到跟目录下的BIN→Debug下
                sw = File.CreateText(strFile + ".txt");//txt文件会创建到跟目录下的BIN→Debug下179
 }
            }180
 catch
            catch181
 {
            {182
 Console.WriteLine("不能创建文件!");
                Console.WriteLine("不能创建文件!");183
 return;
                return;184
 }
            }185

186
 sw.Write("{0} ",strBody);
            sw.Write("{0} ",strBody);187
 sw.Close();
            sw.Close();188

189
 }
        }190

191
 private void downloadMP3(string strUrl,string strFile)
        private void downloadMP3(string strUrl,string strFile)192
 {
        {193
 //打开上次下载的文件或新建文件
            //打开上次下载的文件或新建文件194
 long lStartPos =0;
            long lStartPos =0;195
 System.IO.FileStream fs;
            System.IO.FileStream fs;196
 if (System.IO.File.Exists(strFile))
            if (System.IO.File.Exists(strFile))197
 {
            {198
 fs= System.IO.File.OpenWrite(strFile);
                fs= System.IO.File.OpenWrite(strFile);199
 lStartPos=fs.Length;
                lStartPos=fs.Length;200
 fs.Seek(lStartPos,System.IO.SeekOrigin.Current);   //移动文件流中的当前指针
                fs.Seek(lStartPos,System.IO.SeekOrigin.Current);   //移动文件流中的当前指针201
 }
            }202
 else
            else203
 {
            {204
 fs = new System.IO.FileStream(strFile, System.IO.FileMode.Create);
                fs = new System.IO.FileStream(strFile, System.IO.FileMode.Create);205
 lStartPos =0;
                lStartPos =0;206
 }
            }207

208
 long iFinished = lStartPos;
            long iFinished = lStartPos;209

210
 //打开网络连接
            //打开网络连接211
 try
            try212
 {
            {213
 System.Net.HttpWebRequest request =(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(strUrl);
                System.Net.HttpWebRequest request =(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(strUrl);214

215
 if ( lStartPos>0)
                if ( lStartPos>0)216
 request.AddRange((int)lStartPos);    //设置Range值
                    request.AddRange((int)lStartPos);    //设置Range值217
 
                218
 //向服务器请求,获得服务器回应数据流
                //向服务器请求,获得服务器回应数据流219
 System.IO.Stream ns= request.GetResponse().GetResponseStream();
                System.IO.Stream ns= request.GetResponse().GetResponseStream();220
 iConLength = request.GetResponse().ContentLength;
                iConLength = request.GetResponse().ContentLength;221
 byte[] nbytes = new byte[512];
                byte[] nbytes = new byte[512];222
 int nReadSize=0;
                int nReadSize=0;223
 nReadSize=ns.Read(nbytes,0,512);
                nReadSize=ns.Read(nbytes,0,512);224
 
                225
 while( nReadSize >0)
                while( nReadSize >0)226
 {
                {227
 iFinished += nReadSize;
                    iFinished += nReadSize;228
 fs.Write(nbytes,0,nReadSize);
                    fs.Write(nbytes,0,nReadSize);229
 nReadSize=ns.Read(nbytes,0,512);
                    nReadSize=ns.Read(nbytes,0,512);230
 //progressBar1.Invoke(this.DelegateProgressBarPerformStep, new object[] { iFinished });
                    //progressBar1.Invoke(this.DelegateProgressBarPerformStep, new object[] { iFinished });231
 }
                }232
 fs.Close();
                fs.Close();233
 ns.Close();
                ns.Close();234

235
 }
            }236
 catch(Exception ex)
            catch(Exception ex)237
 {
            {238
 fs.Close();
                fs.Close();239
 MessageBox.Show("下载过程中出现错误:"+ex.ToString());
                MessageBox.Show("下载过程中出现错误:"+ex.ToString());240
 }
            }241
 }
        }242
 }
    }243
 }
}244

 
                    
                     
                    
                 
                    
                

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号