System.Collections.Generic 사용,
System.Data 사용,
System.IO 사용; >System.Net 사용;
System.Threading 사용;
System.Threading.Tasks 사용; {
사용; Control.CheckForIllegalCrossThreadCalls = false; 메서드는 권장되지 않습니다. 즉, 크로스 스레드 작업이 확인되지 않으므로 위임된
InitializeComponent(); private void butSelect_Click(object sender , EventArgs e) {
FolderBrowserDialog dlg = new FolderBrowserDialog();
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { textDir.Text = dlg .SelectedPath
}
}
public static int pagecount = 1; .textShow.AppendText("현재 다운로드 중인 페이지" + 페이지 수 + "페이지")
)) {// 키워드 감지
MessageBox.Show("키워드를 입력하세요! ");
return;
}
if (string.IsNullOrEmpty(textDir.Text)) {//경로 감지
MessageBox.Show ("경로를 선택하세요!");
> >
private void 프로세스(문자열 키) {
int count = (int)numericUpDown.Value;//개수 요청된 페이지
for (int i = 0; i pagecount = i + 1
Showpages(); HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://image.baidu.com/search/avatarjson?tn=resultjsonavatarnew&ie=utf-8&word=" + Uri.EscapeUriString(key) + "&cg=girl&pn=" + ( i + 1) * 60 + "&rn=60&itg=0&z=0&fr=&width=&height=&lm=-1&ic=0&s=0&st=-1&gsm=360600003c");
(HttpWebResponse res = (HttpWebResponse)req.GetResponse()) {
if (res.StatusCode == HttpStatusCode.OK) {
사용 (스트림 스트림 = res.GetResponseStream()) {
시도 {
다운로드(스트림);
} catch(예외 e) {
textShow.BeginInvoke(new Action(() =>
textShow.AppendText(e.Message + Environment.NewLine);
}));
}
}
} else { MessageBox.Show("获取第" + i + "页失败!" + res.StatusCode);
}
}
}
}
비공개 무효 다운로드(스트림 스트림) {
(StreamReader reader = new StreamReader(stream)) {
문자열 json 사용 = reader.ReadToEnd();
JObject objRoot = (JObject)JsonConvert.DeserializeObject(json);
JArray imgs = (JArray)objRoot["imgs"];
for (int j = 0 ; j JObject img = (JObject)imgs[j]; string objUrl = (string)img["objURL"];//http://hibiadu....../1.jpg
// textShow.AppendText(objUrl + Environment.NewLine);
//保存的路径是:destDir;
시도해 보세요 {
DownloadImage(objUrl);//너무 복잡한 메서드의 코드는 피하세요.
~ > > DownloadImage(string objUrl) {
~ 만들기 (objUrl) ;
req.Referer = "http://image.baidu.com/";//Baidu Pictures에서 보낸 웹사이트 서버를 속입니다.
(HttpWebResponse res = (HttpWebResponse)req. GetResponse()) {
if (res.StatusCode == HttpStatusCode.OK) {
using (Stream stream = res.GetResponseStream())
using (Stream filestream = new FileStream(path, FileMode.Create) )) {
stream.CopyTo(filestream); 새 예외("다운로드 실패" + res.StatusCode); 🎜> > }
}