python+selenium实现web自动化图形验证码登录

python+selenium实现web自动化图形验证码登录
一、前提准备
①安装PIL模块:pip install Pillow 【PIL是python的图像处理标准库】
②安装Pytesseract模块:pip install pytesseract【pytesseract和tesserocr是python的一个识别库,pytesseract对tesseract做一层python API封装,pytesseract是Goohle的Tesseract-ocr引擎包器,pytesseract在运行时去调用tesserocr】
③安装tesserocr:下载tesserocr.exe,下载后直接安装,安装后进行配置环境【如下图所示】;我的安装在本地的:C:\Program Files (x86)\Tesseract-OCR;在系统环境中新建【如下图所示】:变量名:TESSDATA_PREFIX,变量值:C:\Program Files (x86)\Tesseract-OCR\tessdata

 

 

 

图形验证代码实现:

from selenium import webdriver
from PIL import Image, ImageEnhance #导入图像处理模块及图像的增强处理的库
import pytesseract #导入图像识别库
import time

driver = webdriver.Chrome()
driver.get(r"https://ec.ayyywl.com/loginRegister")
driver.maximize_window()
time.sleep(2)

#对页面进行截图
driver.save_screenshot('login.png')
#定位验证码的图片位置
img_pic = driver.find_element_by_xpath('//form[@class="ant-form ant-form-horizontal login-form"]//div//div[7]//div[2]//div//img')
#获取验证码的的位置
img_location = img_pic.location
img_size = img_pic.size
#获取验证码的位置坐标(X,Y),获取:上,下,左,右
img_left = img_location['x']
img_top = img_location['y']
img_right = img_left + img_size['width']
img_bottom = img_top + img_size['height']
#输入验证码的位置
#print(img_left, img_top, img_right, img_bottom)

#从文件读取截图,截取验证码位置再次保存
img = Image.open('login.png').crop((img_left, img_top, img_right, img_bottom))
img_convert = img.convert('L') #转换模式:L|RGB
#增强对比度
img_contrast = ImageEnhance.Contrast(img_convert)
img_enhance = img_contrast.enhance(2.0)
#再次保存验证码图片进行保存
img_enhance.save('new.png')
time.sleep(2)
image = Image.open('new.png') # 打开处理后的图片
code = pytesseract.image_to_string(image) # 读取里面的内容
print(code) #输出验证码数据
driver.find_element_by_xpath('//form[@class="ant-form ant-form-horizontal login-form"]//div//div[7]//div[1]//div//div//input').send_keys(code)#输入验证码

 

posted @ 2020-05-02 14:47  놓치다  阅读(788)  评论(1)    收藏  举报