美女图片 下载器开发 之.Net篇 如鹏网
课前说明 功能演示 主要技术: 多线程 网络编程 HTML 委托 IO流 Json 《不拖控件的.Net》 请准备纸巾
画界面 拖控件 选择按钮: FolderBrowserDialog 表单非空校验
基础知识 试验,获取百度首页文本,编码问题? 网页上所有的东西都是HTML描述的;动态的内容是AJAX加载的。 HttpWebRequest的使用: 使用HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(imgUrl);加载Http内容。 HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse()获得响应 Stream webStream = webResponse.GetResponseStream()获得返回流 webResponse.StatusCode获得返回状态码 试验,获取百度首页文本,编码问题? 使用Chrome浏览器访问百度图片、搜索“美女”,在“开发人员工具”的 Network下之过滤显示XHR,向下拖页面,发现请求的url格式 HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(imgUrl); webRequest.Referer = "http://image.baidu.com"; using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse()) using (Stream webStream = webResponse.GetResponseStream()) { if (webResponse.StatusCode == HttpStatusCode.OK) using (FileStream fs = new FileStream(localFile, FileMode.Create)) webStream.CopyTo(fs); } else throw new IOException("下载失败,服务器返回状态码:" +webResponse.StatusCode+"("+webResponse.StatusDescription+")");
Newtonsoft.Json 使用Newtonsoft.Json可以更加方便的进行Json的序列化 和反序列化。 如果对象是普通对象则类型转换为JObject,如果是数组则 转换为JArray 使用Json查看器看清Json的结构,百度搜“Json查看器”, 在线的、本地的都有 JObject jsonObj = (JObject)JsonConvert.DeserializeObject(jsonStr); JArray imgs = (JArray)jsonObj["imgs"]; for (int j = 0; j < imgs.Count; j++) { if (isStopped) break; } JObject img = (JObject)imgs[j]; string objURL = (string)img["objURL"];
开始实现 启动线程,否则会导致页面被卡死。 更新进度条。(*)WinForm中线程更新界面控件的方法 BeginInvoke(new Action(() => { //控件操作 )); 输入的关键字放到uri中要编码: Uri.EscapeDataString(keyword) 取路径中的文件名:Path.GetFileName() 不可能一直不出错,要做好合理的异常处理,防止出现异常就 停止了 怎么有的下载会失败?webRequest.Referer
学了还可以做什么 网站小偷→垂直搜索引擎:比价、旅游资讯等 12306刷票软件