python进阶之Fraction,pil,Counter,BytesIO,eval妙用......

本文介绍了在处理微博汉字点选验证时使用的一些Python进阶技术,包括PIL库的图片处理,使用Fraction库实现精确缩放,利用BytesIO处理内存中的图片,以及注意eval的巧妙运用。还提到了如何在等待元素可点击时避免大量条件判断,以及Counter模块在计数和操作字典方面的便利性。
摘要由CSDN通过智能技术生成

最近在处理微博的汉字点选验证遇到一些问题,用了之前没用过的包,此处算是记录。另外今后不再写爬虫详细的过程只对新技术做笔记
一PIL也就是pillow 图片处理

#导包
from PIL import Image
#open打开文件返回一个携带通道和size的Image对象
#win上要注意路径后缀,当然写好的绝对路径函数另一说
img=Image.open("G:\spider\platform_demo\\1.png","r")#<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=515x692 at 0x271D3DBE588>
print(im.size,im.format,im.mode,im.format)#对像包含图片的size:宽高,mode:颜色的通道'L'(luminance)表示灰度图像,'RGB'表示真彩图像,'CMYK'表示预先压缩的图像,format返回文件的类型比如png。这个不细说
im.show()#在对图片处理,展示图片
im.save(self, fp, format=None, **params)#存储图片对象,fp:存储的位置,format:保存的文件格式
by_arry = BytesIO()
sad.save(by_arry, format='PNG')#也可以这样写不用写路径了,代码中可以直接使用这个对象

#缩放图,第二个是采样
thumbnail(size,resample=BICUBIC)(创建缩略图)只能缩小,直接改变,按比例缩小
img.resize(size, resample=NEAREST, box=None)可放大可缩小,不改变对象返回新的对象,直接按size缩小

#截图
crop(box)#剪矩形区域的左上角x,y坐标,右下角的x,y坐标,规定图像的最左上角的坐标为原点(0,0),宽度的方向为x轴,高度的方向为y轴,每一个像素代表一个坐标单位
实际用法:#j截取的顺序是固定的,这是验证码的一部分
left,top,right,bottom =int(locations['x'])+10, int(locations['y']), int((locations['x'] + sizes['width']))+10,int((locations['y'] + sizes['height']))
img=screent.crop((left,top,right,bottom))

#旋转图片,某种情况下的验证码是可以用到的
transpose(method)(图像翻转或者旋转)
im.transpose(Image.ROTATE_180)
    - Image.FLIP_LEFT_RIGHT,表示将图像左右翻转
    - Image.FLIP_TOP_BOTTOM,表示将图像上下翻转
    - Image.ROTATE_90,表示将图像逆时针旋转90°
    - Image.ROTATE_180,表示将图像逆时针旋转180°
    - Image.ROTATE_270,表示将图像逆时针旋转270°
    - Image.TRANSPOSE,表示将图像进行转置(相当于顺时针旋转90°)
    - Image.TRANSVERSE,表示将图像进行转置,再水平翻转
 
paste(region,box,mask)(将一个图像粘贴到另一个图像)#im.paste
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值