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 ...
随机推荐
- SharePoint 2013 使用JavaScript对象模型配置智能提示
前言 默认在VS2012/2013中编写SharePoint JavaScript 客户端对象模型,都没有智能感知的功能,用起来非常麻烦:其实,我们可以手动配置一下,让JavaScript可以进行智能 ...
- Android—ZXing二维码扫描遇到的问题
最近工作中需要开发带有二维码扫描功能的软件(基于开源项目ZXing),遇到的问题记录一下,也希望给大家带来帮助. 1.首先因为扫描要开摄像机所以加权限是一定的,不然后面什么都不能进行 <uses ...
- compileDebugJavaWithJavac
学习笔记 compileDebugJavaWithJavac,缺少插件,在module app gradle文件最上面添加一段 apply plugin: 'me.tatarka.retrolambd ...
- Java Web中请求转发和请求包含
1.都是在一个请求中跨越多个Servlet 2.多个Servlet在一个请求中,他们共享request对象.就是在AServle中setAttribute()保存数据在BServlet中由getAtt ...
- RecyclerView-------MyAdapter代码
package com.example.administrator.recyclerview; import android.content.Context; import android.suppo ...
- SQL SERVER普通用户需要什么权限才能执行sp_configure命令
SQL SERVER普通用户需要什么权限才能执行sp_configure命令呢? 例如如下存储过程所示 CREATE PROCEDURE PRC_TEST AS BEGIN exec sp_co ...
- [MySQL Reference Manual] 8 优化
8.优化 8.优化 8.1 优化概述 8.2 优化SQL语句 8.2.1 优化SELECT语句 8.2.1.1 SELECT语句的速度 8.2.1.2 WHERE子句优化 8.2.1.3 Range优 ...
- .NET应用架构设计—重新认识分层架构(现代企业级应用分层架构核心设计要素)
阅读目录: 1.背景介绍 2.简要回顾下传统三层架构 3.企业级应用分层架构(现代分层架构的基本演变过程) 3.1.服务层中应用契约式设计来解决动态条件不匹配错误(通过契约式设计模式来将问题在线下暴露 ...
- Redis学习笔记4-Redis配置详解
在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...
- js parseInt和map函数
今天看了一个js的题目["1","2","3"].map(parseInt),看到后脑海中浮现的答案是[1,2,3],但是看到正确答案后蒙了 ...