winform采集网站美女图片程序---多线程篇
设定思路: 采集目标: http://www.8kmm.com, 已知网址列表(List保存), 应用多线程(Thread)读取该列表, 获取url时不能重复(加锁Lock). 允许无序采集!
多线程核心代码:
#region 全局变量 //线程列表 List<Thread> threadslList = new List<Thread>(); //Url列表 List<string> uUrls = new List<string>(); //处理完毕的列表 List<string> OkUrls = new List<string>(); //成功取得的美女图片数量 ; #endregion //取图开始 按钮事件 private void lbtnGetWebImgStart_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { lbtnGetWebImgStart.Enabled = false; GetWebSiteImg(); } //取图停止 按钮事件 private void lbtnGetWebImgStop_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { try { foreach (Thread t in threadslList) { if (t != null) { t.Abort(); } } } catch (Exception ex) { WriteLog("停止失败:" + ex.Message); } finally { lbtnGetWebImgStart.Enabled = true; } } /// <summary> /// 获取图片主方法 /// </summary> private void GetWebSiteImg() { try { ImgCount = ; OkUrls.Clear(); uUrls.Clear(); threadslList.Clear(); //先初始化以上 string[] urls = txtUrl.Text.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); lblC.Text = urls.Length.ToString(CultureInfo.InvariantCulture); uUrls = new List<string>(urls); ; i < int.Parse(numThreadUD.Text); i++) // 循环创建线程 { Thread t = new Thread(Task); t.Name = i.ToString(); t.IsBackground = true; threadslList.Add(t); t.Start(); } } catch (Exception ex) { WriteLog(ex.Message); } } public void Task() { ) { lblMsg.Text = ), threadslList.Count); string url = GetUrl(); if (url == "") { break; } else { )//只有状态200才是正常的, GetHttpImg是我封装的方法, 获取网页, 正则取得所有合规范的图片. { OkUrls.Add(url); lblInfoStart.Text = ().ToString(CultureInfo.InvariantCulture); WriteHtml(txtUrl.Text); if (lblC.Text == lblInfoStart.Text)//判断当前数量是否已是总数. { lblMsg.Text = "完成"; } } } } } /// <summary> /// 线程加锁,防止多个线程同时从list里面取出第一个 /// </summary> /// <returns></returns> public string GetUrl() { lock ("GetUrl") { ) { ]; uUrls.RemoveAt(); return url; } else { return ""; } } }
winform采集网站美女图片程序---多线程篇的更多相关文章
- Python爬取mn52网站美女图片以及图片防盗链的解决方法
防盗链原理 http标准协议中有专门的字段记录referer 一来可以追溯上一个入站地址是什么 二来对于资源文件,可以跟踪到包含显示他的网页地址是什么 因此所有防盗链方法都是基于这个Referer字段 ...
- C# Winform版批量压缩图片程序
需求 上周,领导给我分配了一个需求:服务器上的图片文件非常大,每天要用掉两个G的大小的空间,要做一个自动压缩图片的工具处理这些大图片.领导的思路是这样的: 1)打开一个图片,看它的属性里面象素是多少, ...
- Python爬虫 —— 抓取美女图片(Scrapy篇)
杂谈: 之前用requests模块爬取了美女图片,今天用scrapy框架实现了一遍. (图片尺度确实大了点,但老衲早已无恋红尘,权当观赏哈哈哈) Item: # -*- coding: utf-8 - ...
- 使用php实现爬虫程序 套取网站的图片实例
<?php //去采集a67 图片 网站链接 http://www.xiamov.com/list/1/p.2 你也可以采集其他网站的图片 //创建链接 dedecms--a67 //设置执行不 ...
- 利用内存结构及多线程优化多图片下载(IOS篇)
利用内存结构及多线程优化多图片下载(IOS篇) 前言 下载地址, 后续发布, 请继续关注本blog 在IOS中,我们常常遇到多图片下载的问题.最简单的解决方案是直接利用别人写好的框架.但是这如同练武, ...
- 19_Android中图片处理原理篇,关于人脸识别网站,图片加载到内存,图片缩放,图片翻转倒置,网上撕衣服游戏案例编写
1加载图片到内存 (1).数码相机照片特别是大于3m以上的,内存吃不消,会报OutOfMemoryError,若是想只显示原图片的1/8,可以通过BitmapFactory.Options来实现,具体 ...
- 【Python爬虫程序】抓取MM131美女图片,并将这些图片下载到本地指定文件夹。
一.项目名称 抓取MM131美女写真图片,并将这些图片下载到本地指定文件夹. 共有6种类型的美女图片: 性感美女 清纯美眉 美女校花 性感车模 旗袍美女 明星写真 抓取后的效果图如下,每个图集是一个独 ...
- Scrapy爬取美女图片第三集 代理ip(上) (原创)
首先说一声,让大家久等了.本来打算那天进行更新的,可是一细想,也只有我这样的单身狗还在做科研,大家可能没心思看更新的文章,所以就拖到了今天.不过忙了521,522这一天半,我把数据库也添加进来了,修复 ...
- Scrapy爬取美女图片第四集 突破反爬虫(上)
本周又和大家见面了,首先说一下我最近正在做和将要做的一些事情.(我的新书<Python爬虫开发与项目实战>出版了,大家可以看一下样章) 技术方面的事情:本次端午假期没有休息,正在使用fl ...
随机推荐
- 函数模块:CTVB_COMPARE_TABLES--两个表中删除/变更/粘贴分解
这个函数模块比较两个内表,将被删除.增加和修改的内表行分别分组输出. 输入参数:TABLE_OLD:旧表TABLE_NEW:新表KEY_LENGTH:键长度,指定内表中的前若干个字节(在 Unicod ...
- Google C++单元测试框架GoogleTest---GTest的Sample1和编写单元测试的步骤
如果你还没有搭建gtest框架,可以参考我之前的博客:http://www.cnblogs.com/jycboy/p/6001153.html.. 1.The first sample: sample ...
- CoreData数据库浅析
Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象.在此数 ...
- iOS 最新版 CocoaPods 的安装流程
iOS 最新版 CocoaPods 的安装流程1.移除现有Ruby默认源$gem sources --remove https://rubygems.org/2.使用新的源$gem sources - ...
- iOS开发之功能模块--根据需求开发横向的子弹盒View
这个需求是本人工作开发中后期需求要添加的新功能,本人模仿UITableView的代理和数据源方法进行了第一阶段的开发.第二阶段是添加丰富的动画. 这个功能需求描述:能上传添加五个待选头像,五个头像分别 ...
- 关于watir-webdriver中文乱码问题
require 'watir-webdriver' require 'iconv' cov = Iconv.new( 'gbk', 'utf-8') b = Watir::Browser.new b. ...
- Magical平台类库代码分享
这些天闲来无事,就整理了一些类库.jQuery插件和自定义控件.今天和大家分享下Magical平台类库代码. 下图为整个解决方案图.MagicalPlatForm里面定义的是众多的Layer层:Mag ...
- JVM-漫游
Write once, Run Any where. Java Virtual Machine – JVM 的存在让 Java 开发变得简单,并且一次编写多处运行.其实,JVM 就是一个抽象的计算机, ...
- MongoDB-服务器管理
前言 本文主要涉及一下内容:数据库的备份和恢复,对于任一数据库来说备份至关重要:数据的导入和导出:数据库修复:数据库状态监控工具mongostat:在使用过程遇到其他命令会总结在此. 1.数据库的备份 ...
- mysql数据库乱码解决方法之一
在前端页面向数据库中插入带中文字符的数据,到数据库时中文都变成了"?",其中jsp页面已经是设为utf-8编码的,建数据库时选择的编码也是utf-8; 1.解决的办法是在连接数据库 ...