winform采集网站美女图片程序---多线程篇
之前做的采集程序, 是单线程的, 一个图片列表, 要等着一一采完....浪费了不少时间, 正好今天家里带宽升级, 可以使用多线程采集了.... 连夜改进原来的程序. 使用多线程去采集....
设定思路: 采集目标: http://www.8kmm.com, 已知网址列表(List保存), 应用多线程(Thread)读取该列表, 获取url时不能重复(加锁Lock). 允许无序采集!
先放个美女提提神!
多线程核心代码:
1 #region 全局变量 2 //线程列表 3 List<Thread> threadslList = new List<Thread>(); 4 //Url列表 5 List<string> uUrls = new List<string>(); 6 //处理完毕的列表 7 List<string> OkUrls = new List<string>(); 8 //成功取得的美女图片数量 9 public int ImgCount = 0; 10 #endregion 11 12 13 //取图开始 按钮事件 14 private void lbtnGetWebImgStart_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 15 { 16 lbtnGetWebImgStart.Enabled = false; 17 GetWebSiteImg(); 18 } 19 20 //取图停止 按钮事件 21 private void lbtnGetWebImgStop_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 22 { 23 try 24 { 25 foreach (Thread t in threadslList) 26 { 27 if (t != null) 28 { 29 t.Abort(); 30 } 31 } 32 } 33 catch (Exception ex) 34 { 35 WriteLog("停止失败:" + ex.Message); 36 } 37 finally 38 { 39 lbtnGetWebImgStart.Enabled = true; 40 } 41 } 42 43 /// <summary> 44 /// 获取图片主方法 45 /// </summary> 46 private void GetWebSiteImg() 47 { 48 try 49 { 50 ImgCount = 0; 51 OkUrls.Clear(); 52 uUrls.Clear(); 53 threadslList.Clear(); //先初始化以上 54 string[] urls = txtUrl.Text.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); 55 lblC.Text = urls.Length.ToString(CultureInfo.InvariantCulture); 56 uUrls = new List<string>(urls); 57 for (int i = 0; i < int.Parse(numThreadUD.Text); i++) // 循环创建线程 58 { 59 Thread t = new Thread(Task); 60 t.Name = i.ToString(); 61 t.IsBackground = true; 62 threadslList.Add(t); 63 t.Start(); 64 } 65 } 66 catch (Exception ex) 67 { 68 WriteLog(ex.Message); 69 } 70 } 71 72 73 public void Task() 74 { 75 while (uUrls.Count > 0) 76 { 77 lblMsg.Text = string.Format("剩余:{0},已访问:{1},当前线程数:{2}", uUrls.Count, (OkUrls.Count + 1), threadslList.Count); 78 string url = GetUrl(); 79 if (url == "") 80 { 81 break; 82 } 83 else 84 { 85 if (GetHttpImg(url) == 200)//只有状态200才是正常的, GetHttpImg是我封装的方法, 获取网页, 正则取得所有合规范的图片. 86 { 87 OkUrls.Add(url); 88 lblInfoStart.Text = (int.Parse(lblInfoStart.Text) + 1).ToString(CultureInfo.InvariantCulture); 89 WriteHtml(txtUrl.Text); 90 if (lblC.Text == lblInfoStart.Text)//判断当前数量是否已是总数. 91 { 92 lblMsg.Text = "完成"; 93 } 94 } 95 } 96 } 97 } 98 99 100 /// <summary> 101 /// 线程加锁,防止多个线程同时从list里面取出第一个 102 /// </summary> 103 /// <returns></returns> 104 public string GetUrl() 105 { 106 lock ("GetUrl") 107 { 108 if (uUrls.Count > 0) 109 { 110 string url = uUrls[0]; 111 uUrls.RemoveAt(0); 112 return url; 113 } 114 else 115 { 116 return ""; 117 } 118 } 119 }
代码超级简单, 测试抓取几个列表, 没有问题, 等会用它去抓更多MM。。。
转载于:https://www.cnblogs.com/jackrebel/p/4279612.html
winform采集网站美女图片程序---多线程篇相关推荐
- 爬虫爬取二次元网站美女图片
爬虫爬取二次元网站美女图片 前言 xpath解析 需求分析 代码编写 总代码 前言 本次需要爬取二次元网站cos板块下的图片 需要用到request模块与lxml模块,所以请提前安装好这两个模块,打开 ...
- 爬虫获取网站美女图片
爬虫获取网站美女图片 import requests from lxml import html import os if __name__=="__main__":etree = ...
- Python爬取mn52网站美女图片以及图片防盗链的解决方法
防盗链原理 http标准协议中有专门的字段记录referer 一来可以追溯上一个入站地址是什么 二来对于资源文件,可以跟踪到包含显示他的网页地址是什么 因此所有防盗链方法都是基于这个Referer字段 ...
- Python3+selenium 爬取网站美女图片最简单版本
听说python是爬虫利器,用java几百行的代码,python十几行就搞定了,所以决定自己来感受一下python的方便,参考了很多文章,自己都忘记了,就不一一列举了 1.安装python,pycha ...
- Java爬虫之利用Jsoup+HttpClient爬取类叔叔不约匿名聊天网站的图片,未果——后爬取某网站美女图片案例
博主最近学了一点爬虫的知识,闲着无聊,秉承学以致用的理念,于是突然想到何不挑战一下,爬取一些叔叔不约网站的图片,来巩固一下所学知识(#滑稽).说干就干,打开eclipse或idea,创建maven工程 ...
- python爬取网站美女图片
今天周五,项目刚刚上线完,有些时间,闲着无聊,继续复习爬虫,这次打算爬取网站的美女图片.得先找到目标,然后目标网站还不会反爬虫,因为自己只是小白,好了开始. 寻找目标,发现了目标,哈哈 http:// ...
- Python多线程爬取7160网站美女图片
直接上代码 #coding=UTF-8 from urllib.request import urlopen from pyquery import PyQuery as pq import re i ...
- 靖哥哥教你如何用java做爬虫抓取网站美女图片(详解步骤)
原文 https://www.jggbk.com/blogs/article/258.html
- 拿下了一个美女图片网站!
原文链接:https://www.freebuf.com/articles/web/250308.html 大家好,我是鸟哥,一个半路出家的程序员. 这几天一直再出搭建个人网站的文章,为了进一步提高大 ...
最新文章
- [na]tcpdump非常实用的抓包实例
- Android的单位px,pt,dp,sp总结和获取屏幕分辨率
- NOIP模拟测试19「count·dinner·chess」
- leetcode931. 下降路径最小和(动态规划)
- 各类锁(互斥锁,自旋锁,读写锁,乐观锁,悲观锁,死锁)
- CDH 6 安装服务哈希验证失败 解决方法
- 关于服务器性能的一些思考
- Java基础学习总结(106)——高级JAVA工程师必需技能
- SpringCloud工作笔记038---spring cloud-简单网关权限控制_直接在zuul里面做
- 服务器重启宝塔面板打不开了【已完美解决】
- 机器学习中五种常用的聚类算法
- 江湖小白之一起学Python (三)双色球历史数据抓取
- Word中有些空行无法删除,我是这样解决的.............
- 华中科技大学计算机考研信息汇总
- 水木周平戏说中国网络黑幽默!
- xbox360 双65厚机自制系统无硬盘 U盘玩游戏方法
- 桌面运维成功考证HCIP,我是如何下定决心改变的
- JQuery对象与JavaScript对象的区别与转换
- winDebug 调试
- 七巧板涂色算法(Python)
热门文章
- 解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
- 【微服务】唱吧DevOps的落地,微服务CI/CD的范本技术解读
- 蚂蚁双11的这群筑梦师
- executeUpdate()方法报错或者不执行
- QQ兴趣部落引流方法经验谈
- 朗科人脸加密技术全球首发 移动存储注入生物识别
- redis 学习(17) -- RDB
- 台式计算机销量排名,2016最新联想台式电脑排行榜 销量前十款式推荐【图文】...
- python flask教程百度云,Python Web框架Flask中使用百度云存储BCS实例
- Android AudioRecord录音功能实现并pcm转wav