python识别图形验证码2018-06-26

1.需要导入以下包(pytesseract.src里面应该要用notepad++编辑Tesseract-OCR路径,如我的第26行: tesseract_cmd = 'C:\Program Files (x86)\Tesseract-OCR\\tesseract')

from PILimport Image

from pytesseract.srcimport pytesseract

2.代码实现如下:

 # 截取当前网页,该网页有我们需要的验证码

driver.save_screenshot('D://aa.png')

# 定位验证码

imgelement = driver.find_element_by_xpath(self.IMAGE_CODE_PATH)

# 获取验证码x,y轴坐标

location = imgelement.location

# 获取验证码的长宽

size = imgelement.size

# 写成我们需要截取的位置坐标

rangle = (int(location['x']), int(location['y']), int(location['x'] + size['width']), int(location['y'] + size['height']))

# 打开截图

i = Image.open("D://aa.png")

# 使用Image的crop函数,从截图中再次截取我们需要的区域

frame4 = i.crop(rangle)

frame4.save('D://frame4.png')

img = Image.open('D://frame4.png')

# 锐化图片,这里很关键

im = img.point(lambda i: i *2.5)

BB = pytesseract.image_to_string(im)

print(u"识别的验证码为:" + BB)

3.用try……except Exception取识别出来的0,2,4,6位,为防止错误,如识别不对,重新执行识别图形码方法。

try:

    for iin range(0, 7, 2):

    driver.find_element_by_xpath(self.VERIF_CODE).send_keys(BB[i])

    sleep(3)

    driver.find_element_by_xpath(self.SUMIT).click()

    sleep(3)

except Exception:

    driver.close()

    self.get_streen(user_name,pwd)

4.end

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 需要实现的功能: 在注册前对用户名及电子邮箱进行验重。由于需要明确的返回注册失败原因,因此并未使用or, 而是使用...
    前端沐先生阅读 11,303评论 0 0
  • 这个坎跨不过,你们必分无疑 彼岸君2天前 我会陪伴你很久,故事有悲有喜,有爱有伤; 每天一个,不断不短。 有一天我...
    凯_be21阅读 2,350评论 0 0
  • 先安装UBUNTU17.10,选择清除整个磁盘,完成后,在安装Ubuntu16.04选择删除17.10安装就可保留...
    博硕_888c阅读 4,549评论 0 0
  • *还记得 风雨里 和你相逢 早知道 如此匆匆 又何必 和你相逢 往事一幕幕 伤心一幕幕 你的眼光你的笑 你的叮咛你...
    95栗子宝宝阅读 1,247评论 0 0
  • 这是一本拖了将近4个月,才看完的书。原因是一开始看到上半部分,手头上有一些需要交稿的书,便把这本不是很急的书搁置了...
    桃酥1618阅读 2,532评论 0 1

友情链接更多精彩内容