其中PIL为Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。

PIL第三方库安装 pip install PIL

Image 类是 PIL 库中一个非常重要的类,通过这个类来创建实例可以有直接载入图像文件,读取处理过的图像和通过抓取的方法得到的图像这三种方法。

python中PIL模块中有一个叫做ImageEnhance的类,该类专门用于图像的增强处理,不仅可以增强(或减弱)图像的亮度、对比度、色度,还可以用于增强图像的锐度。

环境:Windows7  64位、python3.5、selenium3.8

一、安装PIL

打开dos命令窗口,进入python安装目录C:\Python\Scripts,输入:pip install pillow 。如下图:

二、安装Tesseract

Tesseract-OCR下载地址 :http://jaist.dl.sourceforge.net/project/tesseract-ocr-alt/tesseract-ocr-setup-3.02.02.exe

tessdata 目录存放的是语言字库文件,和在命令行界面中可能用到的参数所对应的文件. 这个安装程序默认包含了英文字库。

如果想能识别中文,可以到http://code.google.com/p/tesseract-ocr/downloads/list下载对应的语言的字库文件.一般google访问不了,请到这里下载即可,

简体中文字库文件下载地址为:http://download.csdn.net/detail/wanghui2008123/7621567下载完成后解压,然后将该文件剪切到tessdata目录下去就可以了。

详解可参见:http://www.cnblogs.com/wzben/p/5930538.html

三、安装pytesseract

Tesseract并不能直接在python中使用,需要使用python的封装类pytesseract

Python-tesseract 是光学字符识别Tesseract OCR引擎的Python封装类。能够读取任何常规的图片文件(JPG, GIF ,PNG , TIFF等)并解码成可读的语言。在OCR处理期间不会创建任何临文件

打开dos命令窗口,进入python安装目录C:\Python\Scripts,输入:pip install pytesseract 。如下图:

四、获取验证码(下面的代码只能获取英文字符和数字,中文获取不到,为空)

 rom selenium import webdriver
from PIL import Image
from PIL import ImageEnhance
import pytesseract driver=webdriver.Firefox()
url="https://passport.baidu.com/?getpassindex"
driver.get(url)
driver.save_screenshot(r"E:\aa.png") #截取当前网页,该网页有我们需要的验证码
imgelement = driver.find_element_by_xpath(".//*[@id='forgotsel']/div/div[3]/img")
location = imgelement.location #获取验证码x,y轴坐标
size=imgelement.size #获取验证码的长宽
coderange=(int(location['x']),int(location['y']),int(location['x']+size['width']),
int(location['y']+size['height'])) #写成我们需要截取的位置坐标
i=Image.open(r"E:\aa.png") #打开截图
frame4=i.crop(coderange) #使用Image的crop函数,从截图中再次截取我们需要的区域
frame4.save(r"E:\frame4.png")
i2=Image.open(r"E:\frame4.png")
imgry = i2.convert('L') #图像加强,二值化,PIL中有九种不同模式。分别为1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。L为灰度图像
sharpness =ImageEnhance.Contrast(imgry)#对比度增强
i3 = sharpness.enhance(3.0) #3.0为图像的饱和度
i3.save("E:\\image_code.png")
i4=Image.open("E:\\image_code.png")
text=pytesseract.image_to_string(i4).strip() #使用image_to_string识别验证码
print(text)

selenium+Python3.5获取验证码的更多相关文章

  1. python+selenium,实现带有验证码的自动化登录功能

    python+selenium的环境准备,请自行安装完成,这里直接贴代码,方便做项目时直接使用. import time from selenium import webdriver from PIL ...

  2. Python之selenium+pytesseract 实现识别验证码自动化登录脚本

    今天写自己的爆破靶场WP时候,遇到有验证码的网站除了使用pkav的工具我们同样可以通过py强大的第三方库来实现识别验证码+后台登录爆破,这里做个笔记~~~ 0x01关于selenium seleniu ...

  3. selenium篇之滑动验证码

    一.介绍 现在出现了一种通过用户鼠标移动滑块来填补有缺口图片的验证码,我们叫做滑动验证码.它的原理很简单,首先生成一张图片,然后随机挖去一块,在页面展示被挖去部分的图片,再通过js获取用户滑动距离,以 ...

  4. selenium UI自动化解决验证码的五种方法

    TesseractPy3.py #coding=utf-8 import os import subprocess import traceback import logging from PIL i ...

  5. selenium来识别数字验证码

    用python写一爬虫,需要模拟登陆,并且有数字验证码.通过selenium+pytesseract+PIL可以实现验证码识别并登陆.三大步: 用selenium截屏,此时截取的是整个页面的 用PIL ...

  6. selenium破解人人登陆验证码

    from selenium import webdriverfrom PIL import Imagefrom chaojiying import Chaojiying_Clientimport ti ...

  7. Selenium&Pytesseract模拟登录+验证码识别

    验证码是爬虫需要解决的问题,因为很多网站的数据是需要登录成功后才可以获取的. 验证码识别,即图片识别,很多人都有误区,觉得这是爬虫方面的知识,其实是不对的. 验证码识别涉及到的知识:人工智能,模式识别 ...

  8. Selenium&Pytesseract模拟登录+验证码识别

    验证码是爬虫需要解决的问题,因为很多网站的数据是需要登录成功后才可以获取的. 验证码识别,即图片识别,很多人都有误区,觉得这是爬虫方面的知识,其实是不对的. 验证码识别涉及到的知识:人工智能,模式识别 ...

  9. java--连接SQL数据库获取验证码

    1.导入SQL相关的包: 可以下载:mysql-connector-java-5.1.39-bin.jar 将包导入到工程的方法:project(在工程名上点鼠标右键) -> Build Pat ...

随机推荐

  1. oracle10g和oracle11g导入导出数据区别

    其中flxuser为用户名,flxuser为密码,file值为导入到数据库中的备份文件. oracle10g和oracle11g导入导出数据的命令方式大有不同: oracle10g导入数据: imp  ...

  2. jq通过对象获取其ID值,再简单ajax传到后台改值

    <tbody> <tr> <#if scopes?exists> <#list scopes as scopes> <td id='${(scop ...

  3. Java并发编程之synchronized关键字

    整理一下synchronized关键字相关的知识点. 在多线程并发编程中synchronized扮演着相当重要的角色,synchronized关键字是用来控制线程同步的,可以保证在同一个时刻,只有一个 ...

  4. 深入理解v-model

    原文链接:http://www.geeee.top/2019/04/03/vue-v-model/ 转载请注明出处 v-model v-model 是vue的一个语法糖,用于在表单控件或者在组件上创建 ...

  5. docker化java web应用

    一.简介 Docker是一个使用Go语言开发的开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的机器上.Docker的发展速度和火爆程度着实令人惊叹,一 ...

  6. 【API知识】ElementUI一些问题的解决方案

    前言 本人并不是前端开发人员,不过前端的界面和交互也没少写.以下整理一下我在使用elementUI过程中遇到的问题和对应的解决方案. 正文 1.表格字段过长省略 elmentUI的table-colu ...

  7. ProxySQL 配置详解及读写分离(+GTID)等功能说明 (完整篇)

    ProxySQL是灵活强大的MySQL代理层, 是一个能实实在在用在生产环境的MySQL中间件,可以实现读写分离,支持 Query 路由功能,支持动态指定某个 SQL 进行 cache,支持动态加载配 ...

  8. Tensorflow学习笔记(2):tf.nn.dropout 与 tf.layers.dropout

    A quick glance through tensorflow/python/layers/core.py and tensorflow/python/ops/nn_ops.pyreveals t ...

  9. Linux(CentOS6)系统安装Windows字体

    这里说个插曲,最近在linux(CentOS6)服务器上面发布了个Web项目,结果发现,有一处的汉字字体渲染不出来,显示的是“□□□□”.因为我的tomcat编码已经修改了URIEncoding为UT ...

  10. Linux的进程线程及调度

    本文为宋宝华<Linux的进程.线程以及调度>学习笔记. 1 进程概念 1.1 进程与线程的定义 操作系统中的经典定义: 进程:资源分配单位. 线程:调度单位. 操作系统中用PCB(Pro ...