C# 自动爬图工具 为了方便爬MM图片
1
protected string fullName = string.Empty;
2
protected int TopCount = 0;
3
4
private void button1_Click(object sender, EventArgs e)
5
{
6
Application.DoEvents();
7
8
this.button1.Enabled = false;
9
this.tbCount.Enabled = false;
10
this.tbKey.Enabled = false;
11
12
try
13
{
14
TopCount = Convert.ToInt32(this.tbCount.Text);
15
}
16
catch
17
{
18
MessageBox.Show("输入数字");
19
}
20
21
string HTML = string.Empty;
22
for (int x = 0; x < TopCount; x++)
23
{
24
25
Application.DoEvents();
26
27
string url = @"http://image.baidu.com/i?z=3&cl=2&ct=201326592&sn=&lm=-1&cm=1&sc=0&bu=&rn=21&tn=baiduimage&word={0}&pn={1}";
28
string Key = System.Web.HttpUtility.UrlEncode(tbKey.Text, System.Text.UnicodeEncoding.GetEncoding("GB2312")).ToUpper();
29
30
int ctr = 21 * x;
31
32
url = string.Format(url, Key, ctr);
33
Application.DoEvents();
34
35
WebRequest myRequest = WebRequest.Create(url);
36
WebResponse myResponse = myRequest.GetResponse();
37
Stream S = myResponse.GetResponseStream();
38
StreamReader sr = new System.IO.StreamReader(S, Encoding.Default);
39
40
HTML += sr.ReadToEnd();
41
42
sr.Close();
43
}
44
45
46
47
48
string Pattern = @"http:\/\/[^\'\""]*\.jpg|http:\/\/[^\'\""]*\.gif";
49
System.Text.RegularExpressions.Regex Re = new System.Text.RegularExpressions.Regex(Pattern);
50
51
TopCount = Re.Matches(HTML).Count;
52
53
54
55
int count = 0;
56
if (Re.Matches(HTML).Count >= 6)
57
{
58
foreach (System.Text.RegularExpressions.Match m in Re.Matches(HTML))
59
{
60
Application.DoEvents();
61
62
63
this.button1.ForeColor = Color.Red;
64
this.button1.Text = count.ToString() + "/" + TopCount;
65
66
if (m.Value.IndexOf("baidu") < 0)
67
{
68
download(m.Value);
69
70
Application.DoEvents();
71
72
this.pictureBox1.ImageLocation = fullName;
73
74
75
count++;
76
77
}
78
79
}
80
}
81
82
}
83
84
85
//
86
private void download(string url)
87
{
88
89
try
90
{
91
Application.DoEvents();
92
93
string extend = url.Substring(url.LastIndexOf("."));
94
string name = this.tbKey.Text+Guid.NewGuid().ToString();
95
string fileName = name + extend;
96
97
WebRequest myRequest = WebRequest.Create(url);
98
Stream stream = myRequest.GetResponse().GetResponseStream();
99
Byte[] buffer = new byte[256];
100
101
string path= @"F:\\自动爬图\\"+this.tbKey.Text+"\\";
102
103
if (Directory.Exists(path))
104
{ }
105
else
106
{
107
Directory.CreateDirectory(path);
108
}
109
110
fullName = fileName = path + fileName;
111
112
113
114
FileStream filestream = new FileStream(fullName, FileMode.Create, FileAccess.Write);
115
int sizeCount = stream.Read(buffer, 0, 256);
116
try
117
{
118
119
int sum = 0;
120
while (sizeCount > 0)
121
{
122
Application.DoEvents();
123
124
filestream.Write(buffer, 0, sizeCount);
125
sizeCount = stream.Read(buffer, 0, 256);
126
sum += sizeCount;
127
this.Text = "已传输"+sum + "字节";
128
}
129
130
131
}
132
catch (Exception ex)
133
{
134
135
136
}
137
filestream.Close();
138
stream.Close();
139
140
141
}
142
catch (Exception ex)
143
{
144
145
146
}
147
148
149
150
}
protected string fullName = string.Empty;2
protected int TopCount = 0;3

4
private void button1_Click(object sender, EventArgs e)5
{6
Application.DoEvents();7

8
this.button1.Enabled = false;9
this.tbCount.Enabled = false;10
this.tbKey.Enabled = false;11
12
try13
{14
TopCount = Convert.ToInt32(this.tbCount.Text);15
}16
catch17
{18
MessageBox.Show("输入数字");19
}20

21
string HTML = string.Empty;22
for (int x = 0; x < TopCount; x++)23
{24

25
Application.DoEvents();26

27
string url = @"http://image.baidu.com/i?z=3&cl=2&ct=201326592&sn=&lm=-1&cm=1&sc=0&bu=&rn=21&tn=baiduimage&word={0}&pn={1}";28
string Key = System.Web.HttpUtility.UrlEncode(tbKey.Text, System.Text.UnicodeEncoding.GetEncoding("GB2312")).ToUpper();29

30
int ctr = 21 * x;31

32
url = string.Format(url, Key, ctr);33
Application.DoEvents();34

35
WebRequest myRequest = WebRequest.Create(url);36
WebResponse myResponse = myRequest.GetResponse();37
Stream S = myResponse.GetResponseStream();38
StreamReader sr = new System.IO.StreamReader(S, Encoding.Default);39

40
HTML += sr.ReadToEnd();41

42
sr.Close();43
}44
45

46

47

48
string Pattern = @"http:\/\/[^\'\""]*\.jpg|http:\/\/[^\'\""]*\.gif";49
System.Text.RegularExpressions.Regex Re = new System.Text.RegularExpressions.Regex(Pattern);50

51
TopCount = Re.Matches(HTML).Count;52

53

54

55
int count = 0;56
if (Re.Matches(HTML).Count >= 6)57
{58
foreach (System.Text.RegularExpressions.Match m in Re.Matches(HTML))59
{60
Application.DoEvents();61

62

63
this.button1.ForeColor = Color.Red;64
this.button1.Text = count.ToString() + "/" + TopCount;65

66
if (m.Value.IndexOf("baidu") < 0)67
{68
download(m.Value);69

70
Application.DoEvents();71

72
this.pictureBox1.ImageLocation = fullName;73

74

75
count++;76

77
}78

79
}80
}81

82
}83

84

85
//86
private void download(string url)87
{88

89
try90
{91
Application.DoEvents();92

93
string extend = url.Substring(url.LastIndexOf("."));94
string name = this.tbKey.Text+Guid.NewGuid().ToString();95
string fileName = name + extend;96
97
WebRequest myRequest = WebRequest.Create(url);98
Stream stream = myRequest.GetResponse().GetResponseStream();99
Byte[] buffer = new byte[256];100

101
string path= @"F:\\自动爬图\\"+this.tbKey.Text+"\\";102

103
if (Directory.Exists(path))104
{ }105
else106
{107
Directory.CreateDirectory(path);108
}109

110
fullName = fileName = path + fileName;111

112

113

114
FileStream filestream = new FileStream(fullName, FileMode.Create, FileAccess.Write);115
int sizeCount = stream.Read(buffer, 0, 256);116
try117
{118

119
int sum = 0;120
while (sizeCount > 0)121
{122
Application.DoEvents();123

124
filestream.Write(buffer, 0, sizeCount);125
sizeCount = stream.Read(buffer, 0, 256);126
sum += sizeCount;127
this.Text = "已传输"+sum + "字节";128
}129

130
131
}132
catch (Exception ex)133
{134

135

136
}137
filestream.Close();138
stream.Close();139

140

141
}142
catch (Exception ex)143
{144

145

146
}147

148

149

150
}

浙公网安备 33010602011771号