版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python爬虫进阶班教室讲师:忘仙时间:2018年4月教学监督热线教学监督热线010203第一部分:认识验证码第二部分:PIL库或者pillow第三部分:简单验证码识别本节知识点第一部分认识验证码教学监督热线验证码知识点0102知识点一:什么是验证码知识点二:验证码的类别知识点一:什么是验证码验证码(CAPTCHA)是“CompletelyAutomatedPublicTuringtesttotellComputersandHumansApart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类知识点二:验证码的类别图像验证码对图像验证码来讲,这类验证码大多是数字、字母的组合,国内也有使用汉字的。在这个基础上增加噪点、干扰线、变形、重叠、不同字体颜色等方法来增加识别难度。相应的这种验证码的识别大概分为以下几个步骤:1.灰度处理2.二值化3.降噪4.识别知识点二:验证码的类别滑动验证码滑动验证码也可以叫做行为验证,其中最出名的就是极验。现在极验验证码已经更新到了3.0版本,截至2017年7月全球已有十六万家企业正在使用极验,每天服务响应超过四亿次,广泛应用于直播视频、金融服务、电子商务、游戏娱乐、政府企业等各大类型网站。滑动验证码的原理就是使用机器学习中的深度学习技术,根据一些特征来区分是否为正常用户。比如,可以通过记录用户的滑动平均速度,还有每一小段时间的瞬时速度,用户鼠标点击情况,以及滑动后的匹配程度来识别。而且,不是说滑动到正确位置就是验证通过,而是根据特征识别来区分是否为真用户,滑到正确位置只是一个必要条件。知识点二:验证码的类别点击验证码常见的点击类验证码都是给出一张包含文字的图片,通过文字提醒用户点击图中相同字的位置进行验证。如:第二部分PIL库教学监督热线PIL知识点010203知识点一:PIL介绍知识点二:PIL的基本概念知识点三:PIL图像操作知识点一:PIL介绍PIL(PythonImageLibrary)是Python平台处理图片的事实标准,兼具强大的功能和简洁的API。另外虽然介绍的是PIL,但实际上安装的却是Pillow。PIL的更新速度很慢,而且存在一些难以配置的问题,不推荐使用;而Pillow库则是PIL的一个分支,维护和开发活跃,Pillow兼容PIL的绝大多数语法,推荐使用。安装:sudopipinstallpillow安装好之后,打开Python解释器,输入fromPILimportImage来测试是否安装成功。知识点二:PIL基本概念PIL中所涉及的基本概念有如下几个:通道(bands)、尺寸(size)、坐标系统(coordinatesystem)。通道每张图片都是由一个或者多个数据通道构成。PIL允许在单张图片中合成相同维数和深度的多个通道。以RGB图像为例,每张图片都是由三个数据通道构成,分别为R、G和B通道。而对于灰度图像,则只有一个通道。对于一张图片的通道数量和名称,可以通过方法getbands()来获取。方法getbands()是Image模块的方法,它会返回一个字符串元组(tuple)。该元组将包括每一个通道的名称。fromPILimportImageim=Image.open("code.jpg")print(im.getbands())输出:('R','G','B')知识点二:PIL基本概念尺寸通过size属性可以获取图片的尺寸。这是一个二元组,包含水平和垂直方向上的像素的个数。属性size的使用如下:fromPILimportImageim=Image.open("code.jpg")print(im.size)输出:(240,60)知识点三:PIL操作图像PIL的主要功能定义在Image类当中,而Image类定义在同名的Image模块当中。使用PIL的功能,一般都是从新建一个Image类的实例开始。新建Image类的实例有多种方法。你可以用Image模块的open()函数打开已有的图片档案,也可以处理其它的实例,或者从零开始构建一个实例。生成图片Image.new(mode,size,color)⇒image其中mode表示模式,size表示大小,color表示颜色fromPILimportImageim=Image.new("RGB",(128,128),"#FF0000")im.save('red.jpg')im=Image.open('code.jpg')知识点三:PIL操作图像Image类的实例有4个常用属性,分别是:format:以string返回图片档案的格式(JPG,PNG,BMP,None,etc),如果不是从打开文件得到的实例,则返回None。mode:以string返回图片的模式(RGB,CMYK,etc)size:以二元tuple返回图片档案的尺寸(width,height)info:以字典形式返回示例的信息知识点三:PIL操作图像Image实例方法:convert将当前图像转换为其他模式,并且返回新的图像。fromPILimportImageim=Image.open('code.jpg')print(im.mode)im1=im.convert('1')print(im1.mode)getpixel((x,y))返回给定位置的像素值。如果图像为多通道,则返回一个元组。fromPILimportImageim1=Image.open("code.jpg")print(im1.getpixel((1,1)))print(im1.getpixel((6,6)))crop()图像中剪切出某个矩形大小的图像。它接收一个四元素的元组作为参数,各元素为(left,upper,right,lower),坐标系统的原点(0,0)是左上角。第三部分简单验证码识别教学监督热线简单验证码知识点0102知识点一:灰度处理知识点二:二值化03知识点三:降噪知识点一:灰度处理灰度化处理的基本原理灰度图像是R、G、B三个分量相同的一种特殊的彩色图像。简单来讲就是R=G=B.fromPILimportImageimage=Image.open('code.jpg')im=image.convert('L')知识点二:二值化图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。defbinarizing(img,threshold=127):"""传入image对象进行灰度、二值处理"""img=img.convert("L")#转灰度pixdata=img.load()w,h=img.size#遍历所有像素,大于阈值的为黑色foryinrange(h):forxinrange(w):ifpixdata[x,y]<threshold:pixdata[x,y]=0else:pixdata[x,y]=255returnimg知识点三:降噪根据一个点A的RGB值,与周围的8个点的RBG值比较,设定一个值N(0<N<8),当A的RGB值与周围8个点的RGB相等或者小于N时,此点为噪点defdepoint(img):"""传入二值化后的图片进行降噪"""pixdata=img.load()w,h=img.sizeforyinrange(1,h-1):forxinrange(1,w-1):count=0ifpixdata[x,y-1]>245:#上count=count+1ifpixdata[x,y+1]>245:#下count=count+1ifpixdata[x-1,y]>245:#左count=count+1ifpixdata[x+1,y]>245:#右count=count+1ifcount>4:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论