基于C#的百度图片批量下载工具

基于C#的百度图片批量下载工具,第1张

概述基于C#的百度图片批量下载工具

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

    using System;      using System.Collections.Generic;      using System.ComponentModel;      using System.Data;      using System.Drawing;      using System.IO;      using System.linq;      using System.Net;      using System.Text;      using System.Threading;      using System.Threading.Tasks;      using System.windows.Forms;      using Newtonsoft.Json;      using Newtonsoft.Json.linq;            namespace 图片下载器 {          public partial class Form1 : Form {              private string dir;              public Form1() {                  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;              private voID Showpages() {                  this.textShow.AppendText("目前正在下载第" + pagecount + "页\n");              }              private voID butStart_Click(object sender,EventArgs e) {                  string key = textKeyWords.Text;                  if (string.IsNullOrEmpty(key)) {//检测关键字                      MessageBox.Show("请输入关键词!");                      return;                  }                  if (string.IsNullOrEmpty(textDir.Text)) {//检测路径                      MessageBox.Show("请选择路径!");                      return;                  }                  dir = textDir.Text;                  if (!dir.EndsWith("\")) {                      dir = dir + "\";                  }                  Thread thread = new Thread(() => {//启动一个新线程                      process(key);                  });                  thread.Start();//线程启动              }                    private voID process(string key) {                  int count = (int)numericupdown.Value;//请求的页面数量                  for (int i = 0 ; i < count ; 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");                      using (httpWebResponse res = (httpWebResponse)req.GetResponse()) {                          if (res.StatusCode == httpStatusCode.OK) {                              using (Stream stream = res.GetResponseStream()) {                                  try {                                      download(stream);                                  } catch (Exception e) {                                      textShow.BeginInvoke(new Action(() => {                                          textShow.AppendText(e.Message + Environment.Newline);                                      }));                                  }                              }                          } else {                              MessageBox.Show("获取第" + i + "页失败!" + res.StatusCode);                          }                      }                  }              }                    private voID download(Stream stream) {                  using (StreamReader reader = new StreamReader(stream)) {                      string Json = reader.ReadToEnd();                      JObject objRoot = (JObject)JsonConvert.DeserializeObject(Json);                      JArray imgs = (JArray)objRoot["imgs"];                      for (int j = 0 ; j < imgs.Count ; j++) {                          JObject img = (JObject)imgs[j];                          string objUrl = (string)img["objURL"];//http://hibiadu....../1.jpg                          // textShow.AppendText(objUrl + Environment.Newline);                          //保存的路径是:destDir;                          try {                              DownloadImage(objUrl);//避免一个方法中的代码过于复杂                          } catch (Exception ex) {                              //子线程的代码中 *** 作界面控件要使用BeginInvoke                              textShow.BeginInvoke(new Action(() => {                                  textShow.AppendText(ex.Message + Environment.Newline);                              }));                          }                      }                  }              }              private voID DownloadImage(string objUrl) {                  //得到保存的路径                  string path = Path.Combine(dir,Path.Getfilename(objUrl));                  httpWebRequest req = (httpWebRequest)WebRequest.Create(objUrl);                  req.Referer = "http://image.baIDu.com/";//欺骗网站服务器这是从百度图片发出的                  using (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);                          }                      } else {                          throw new Exception("下载失败" + res.StatusCode);                      }                  }              }          }      }  

百度网盘下载:http://pan.baidu.com/s/1kT3YzXl密码: gafi

来自:http://blog.csdn.net/jtahstu/article/details/48109555

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的基于C#的百度图片批量下载工具全部内容,希望文章能够帮你解决基于C#的百度图片批量下载工具所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1237645.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存