python验证码登录代码_Python用代码实现验证码登录

由于自己的工作需要,经常会用到这种需要输入图形验证码的登录,网上也有很多方式。

经常会遇到需要模拟手工操作输入验证的时候,也看了很多的方法,最后想了一下,决定写一个识别图像验证码的脚本。

其实也就是将有图形验证码的页面截图下来,在使用Python的PIL库将验证码识别成可操作的对象。

代码如下:

# -*- coding: UTF-8 -*_

from PIL import Image

from pytesseract import *

import PIL.ImageOps

from selenium import webdriver

driver = webdriver.Chrome()

driver.maximize_window()

driver.get(url) #url是你的网址

driver.get_screenshot_as_file(r'D:\PIC\PIC.png') #将该页面截图保存

path = r'D:\PIC\PIC.png'

#导入有验证码的图片

im1 = Image.open(path)

#图片的宽度和高度

img_size = im1.size

print("图片宽度和高度分别是{}".format(img_size))

'''

裁剪:传入一个元组作为参数

元组里的元素分别是:(距离图片左边界距离x, 距离图片上边界距离y,距离图片左边界距离+裁剪框宽度x+w,距离图片上边界距离+裁剪框高度y+h)

'''

#截取图片中一块有验证码的区域,这个位置需要自己去调整

x = 1311

y = 459

w = 115

h = 52

region = im1.crop((x, y, x + w, y + h))

region.save("D:/PIC/test1.png")#保存

def initTable(threshold=140):

table = []

for i in range(256):

if i < threshold:

table.append(0)

else:

table.append(1)

return table

im = Image.open('G:/PIC/test1.png')

#图片的处理过程

im = im.convert('L')

binaryImage = im.point(initTable(), '1')

im1 = binaryImage.convert('L')

im2 = PIL.ImageOps.invert(im1)

im3 = im2.convert('1')

im4 = im3.convert('L')

#将图片中字符裁剪保留

box = (10,10,110,48)

region = im.crop(box)

#将图片字符放大

out = region.resize((128,49))

code = pytesseract.image_to_string(out)#code就是图形中的验证码

print(code)

#print (out.show())

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值