Python之验证码识别功能
Python之pytesseract 识别验证码
1、验证码来一个
2、适合什么样的验证码呢?
只能识别简单、静态、无重叠、只有数字字母的验证码
3、实际应用:模拟人工登录、页面内容识别、爬虫抓取信息
步骤一:
下载工具Tesseract-OCR,下载地址https://digi.bib.uni-mannheim.de/tesseract/,下载成功后,傻瓜式安装在英文路径下
安装后或出现一个目录:D:\syspath\tesseract\Tesseract-OCR,将安装路径配置环境变量
步骤二:
添加tessdata系统变量,要注意是系统变量:名称TESSDATA_PREFIX;路径D:\syspath\tesseract\Tesseract-OCR\tessdata
dos命令窗口输入:tesseract --version 展示版本信息后说明OK
验证图片识别:
同样dos命令窗口:tesseract C:\a.png D:\1.txt
a.png是图片,1.txt是识别后数据存放文件
如何识别页面上的信息并抓取信息
安装pytesserac模块:pip install pytesserac
修改pytesseract.py文件中tesseract_cmd字段信息
例如:将tesseract_cmd = 'tesseract'修改为:tesseract_cmd = 'D:/Program Files (x86)/Tesseract-OCR/tesseract.exe'
这样就安装好pytesserac模块了
使用:
一个获取登陆页面验证码的脚本#-*- coding = utf - 8 -*-
import time , sys
import pytesseract
from PIL import Image,ImageEnhance
from selenium import webdriver
screenImg = "D:/checkcode.png"
driver = webdriver.Chrome
driver.get(https://192.168.1.1:8080/login)
driver.maximize_window()
driver.save_screenshot(screenImg) # 截取当前网页,该网页有我们需要的验证码
location = self.param1.find_element_by_xpath("//img[@class='check-code']").location
size = self.param1.find_element_by_xpath("//img[@class='check-code']").size
left = location['x']
top = location['y']
right = location['x'] + size['width']
bottom = location['y'] + size['height']
img = Image.open(screenImg).crop((left, top, right, bottom))
img = img.convert('L') # 转换模式:L | RGB
img = ImageEnhance.Contrast(img) # 增强对比度
img = img.enhance(2.0) # 增加饱和度
img.save(screenImg)
# 读取截图
img = Image.open(screenImg)
# 获取验证码
code = pytesseract.image_to_string(img)
# 打印验证码
print(list(code))
以上是抓取一个页面的验证码,那么同样可以使用在爬虫上面去
楼主萌新,不喜勿喷 哈哈哈
Python之验证码识别功能的更多相关文章
- Python - PIL-pytesseract-tesseract验证码识别
N天前实现了简单的验证识别,这玩意以前都觉得是高大上的东西,一直没有去研究,这次花了点时间研究了一下,当然只是一些基础的东西,高深的我也不会,分享一下给大家吧. 关于python验证码识别库,网上主要 ...
- 关于利用python进行验证码识别的一些想法
转载:@小五义http://www.cnblogs.com/xiaowuyi 用python加“验证码”为关键词在baidu里搜一下,可以找到很多关于验证码识别的文章.我大体看了一下,主要方法有几类: ...
- python之验证码识别 特征向量提取和余弦相似性比较
0.目录 1.参考2.没事画个流程图3.完整代码4.改进方向 1.参考 https://en.wikipedia.org/wiki/Cosine_similarity https://zh.wikip ...
- Mac python Tesseract 验证码识别
Tesseract 简介 Tesseract(/'tesərækt/) 这个词的意思是"超立方体",指的是几何学里的四维标准方体,又称"正八胞体".不过这里要讲 ...
- python tesseract-ocr 基础验证码识别功能(Windows)
一.环境 windows 7 x64 Python 3 + 二.安装 1.tesseract-ocr安装 http://digi.bib.uni-mannheim.de/tesseract/ 2.py ...
- python 豆瓣验证码识别总结
总结: pytesseract 识别比较标准的图片 识别成功率 还是不错的. 验证码的图片识别 需要先处理好 再用pytesseract 识别 from PIL import Image ...
- python语言验证码识别,以后不用老输入验证码了。
1.Python 3.6 安装包 1.要加环境变量 2.pip安装PIL库 3.pip安装pytesseract模块 2.tesseract-ocr-setup-4.00.00dev.exe -- ...
- python+tesseract验证码识别的一点小心得
由于公司需要,最近开始学习验证码的识别 我选用的是tesseract-ocr进行识别,据说以前是惠普公司开发的排名前三的,现在开源了.到目前为止已经出到3.0.2了 当然了,前期我们还是需要对验证码进 ...
- python简单验证码识别
在学习python通过接口自动登录网站时,用户名密码.cookies.headers都好解决但是在碰到验证码这个时就有点棘手了:于是通过网上看贴,看官网完成了对简单验证码的识别,如果是复杂的请看大神的 ...
随机推荐
- Jmeter接口参数化<自动化>(csv文件)管理测试用例以及断言
1.创建相关线程组(不解释) 2.创建相应的请求(在请求中设置变量) 下面截图中①②③④⑤⑥⑦皆可以设置为变量 3.新建CSV文件 将请求中设置的变量为明确了解每个字段的含义(皆可以将变量填写到列表的 ...
- VS Code官方插件集与工具
如果您也使用VS Code作为CabloyJS项目开发的主编辑器,那么可以参考官方使用的插件集,此外也提供了一些周边工具 这是官方亲测可用的最简插件集,再也不必东奔西走了 插件集 插件名称 用途 Vi ...
- App自动化之dom结构和元素定位方式(包含滑动列表定位)
900×383 38 KB 先来看几个名词和解释: dom: Document Object Model 文档对象模型 dom应用: 最早应用于html和js的交互.界面的结构化描述, 常见的格式为h ...
- 【Java面试】为什么引入偏向锁、轻量级锁,介绍下升级流程
Hi,我是Mic 一个工作了7年的粉丝来找我,他说最近被各种锁搞晕了. 比如,共享锁.排它锁.偏向锁.轻量级锁.自旋锁.重量级锁. 间隙锁.临键锁.意向锁.读写锁.乐观锁.悲观锁.表锁.行锁. 然后前 ...
- DDos、CC攻击与防御
DDoS介绍 DDoS是英文Distributed Denial of Service的缩写,意即"分布式拒绝服务",那么什么又是拒绝服务(Denial of Service)呢? ...
- go-zero微服务实战系列(八、如何处理每秒上万次的下单请求)
在前几篇的文章中,我们花了很大的篇幅介绍如何利用缓存优化系统的读性能,究其原因在于我们的产品大多是一个读多写少的场景,尤其是在产品的初期,可能多数的用户只是过来查看商品,真正下单的用户非常少.但随着业 ...
- ArrayList分析1-循环、扩容、版本
ArrayList分析1-循环.扩容.版本 转载请注明出处 https://www.cnblogs.com/funnyzpc/p/16407733.html 前段时间抽空看了下ArrayList的源码 ...
- 编译kubeadm使生成证书有效期为100年
目录 问题 编译 检查结果 问题 当我使用kubeadm部署成功k8s集群时在想默认生成的证书有效期是多久,如下所示 /etc/kubernetes/pki/apiserver.crt #1年有效期 ...
- warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8): No such file or directory
1)apt-get clean && apt-get update && apt-get install -y locales 2)locale-gen en_US.U ...
- 零基础学Java(7)大数
大数 如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中两个很有用的类:BigInteger和BigDecimal.这两个类可以处理包含任意长度数字序列的数值.BigInte ...