selenium+Python3.5获取验证码
其中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获取验证码的更多相关文章
- python+selenium,实现带有验证码的自动化登录功能
python+selenium的环境准备,请自行安装完成,这里直接贴代码,方便做项目时直接使用. import time from selenium import webdriver from PIL ...
- Python之selenium+pytesseract 实现识别验证码自动化登录脚本
今天写自己的爆破靶场WP时候,遇到有验证码的网站除了使用pkav的工具我们同样可以通过py强大的第三方库来实现识别验证码+后台登录爆破,这里做个笔记~~~ 0x01关于selenium seleniu ...
- selenium篇之滑动验证码
一.介绍 现在出现了一种通过用户鼠标移动滑块来填补有缺口图片的验证码,我们叫做滑动验证码.它的原理很简单,首先生成一张图片,然后随机挖去一块,在页面展示被挖去部分的图片,再通过js获取用户滑动距离,以 ...
- selenium UI自动化解决验证码的五种方法
TesseractPy3.py #coding=utf-8 import os import subprocess import traceback import logging from PIL i ...
- selenium来识别数字验证码
用python写一爬虫,需要模拟登陆,并且有数字验证码.通过selenium+pytesseract+PIL可以实现验证码识别并登陆.三大步: 用selenium截屏,此时截取的是整个页面的 用PIL ...
- selenium破解人人登陆验证码
from selenium import webdriverfrom PIL import Imagefrom chaojiying import Chaojiying_Clientimport ti ...
- Selenium&Pytesseract模拟登录+验证码识别
验证码是爬虫需要解决的问题,因为很多网站的数据是需要登录成功后才可以获取的. 验证码识别,即图片识别,很多人都有误区,觉得这是爬虫方面的知识,其实是不对的. 验证码识别涉及到的知识:人工智能,模式识别 ...
- Selenium&Pytesseract模拟登录+验证码识别
验证码是爬虫需要解决的问题,因为很多网站的数据是需要登录成功后才可以获取的. 验证码识别,即图片识别,很多人都有误区,觉得这是爬虫方面的知识,其实是不对的. 验证码识别涉及到的知识:人工智能,模式识别 ...
- java--连接SQL数据库获取验证码
1.导入SQL相关的包: 可以下载:mysql-connector-java-5.1.39-bin.jar 将包导入到工程的方法:project(在工程名上点鼠标右键) -> Build Pat ...
随机推荐
- java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.bjsxt.mapper.PeopleMapper
报错信息: Type Exception Report Description The server encountered an unexpected condition that prevente ...
- 图像处理之Retinex增强算法(SSR、MSR、MSRCR)
视网膜-大脑皮层(Retinex)理论认为世界是无色的,人眼看到的世界是光与物质相互作用的结果,也就是说,映射到人眼中的图像和光的长波(R).中波(G).短波(B)以及物体的反射性质有关 其中I是人眼 ...
- C++虚表详解
所有结果均为32位系统,指针为4个字节 简单继承 class A { public: int a; }; class B : public A { public: int b; }; 对象B的内存布局 ...
- S0到S5状态讲解
ACPI(高级配置和电源管理接口)的六种工作状态Advanced Configuration and Power Management InterfaceACPI表示高级配置和电源管理接口( Adva ...
- ELK(elasticsearch+kibana+logstash)搜索引擎(二): elasticsearch基础教程
1.elasticsearch的结构 首先elasticsearch目前的结构为 /index/type/id id对应的就是存储的文档ID,elasticsearch一般将数据以JSON格式存储. ...
- [Cerc2012]Non-boring sequences
Description 定义一个序列是不无聊的,当且仅当它的所有子区间都存在一个独一无二的数字,即每个子区间里至少存在一个数字只出现过一次.给定一个长度为\(N(N\leq2\times 10^5)\ ...
- 如何将自定义的搜索参数便捷的添加到js方式的bootstrap table的参数中
页面: <div> <form id="exp_form"> 查询参数... <button type="button" oncl ...
- [转].Python中sorted函数的用法
[Python] sorted函数 我们需要对List.Dict进行排序,Python提供了两个方法对给定的List L进行排序,方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副 ...
- openWin和openFrame 设置透明背景
openWin简单点说就是:像是一个浏览器 openFrame就是对应openWin浏览器里面打开的每一个网页 有些操作只能在openWin里面执行,比如监听安卓返回事件,只能在openWin里面才有 ...
- 《深入理解Java虚拟机》(五)JVM调优 - 工具
JVM调优 - 工具 JConsole:Java监视与管理控制台 JConsole是一个机遇JMX(Java Management Extensions,即Java管理扩展)的JVM监控与管理工具,监 ...