IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 爬虫学习5---反反爬之识别图片验证码(ddddocr和pytesseract实测效果) -> 正文阅读

[Python知识库]爬虫学习5---反反爬之识别图片验证码(ddddocr和pytesseract实测效果)

爬虫学习5—反反爬之识别图片验证码

名称环境版本说明
ddddocrlinux系统安装;python3版本:3.6.8;命令:python3 -m pip install ddddocr;安装的版本:ddddocr-1.4.3/usr/local/lib/python3.6/site-packages/ddddocr-1.4.3-py3.6.egg/ddddocr/init.py中需要注释调项目说明,识别效果较好;见下图: 在这里插入图片描述
pytesseractlinux系统安装;python3版本:3.6.8;需要安装tesseract识别效果一般不推荐

一、利用ddddocr识别图片验证码示例

首先安装ddddocr模块:python3 -m pip install ddddocr
	安装过程较为曲折,总是报错,后来按照报错的连带模块进行单独安装后,才安装完成。

1、示例代码

from selenium import webdriver
import time
from PIL import Image,ImageEnhance

import ddddocr

ocr = ddddocr.DdddOcr()   

url = "要访问的页面"
options = webdriver.ChromeOptions()
options.add_argument("--headless")  # 开启无界面模式
options.add_argument('--no-sandbox')
options.add_argument("--disable-gpu")
options.add_argument('--disable-dev-shm-usage')  # linux上需要设置上面四项内容。
driver = webdriver.Chrome(chrome_options=options,executable_path='/usr/bin/chromedriver')

driver.get(url)  # 请求Url
driver.maximize_window()    # 全屏显示
driver.save_screenshot('m3.png')    # 截屏整个页面,并保存为图片
location = driver.find_element_by_xpath('//*[@id="login"]/div[5]/span')   # 获取验证码区域的坐标
# print(location.location)
size = location.size   # 坐标大小
# print(size)
rangle = (int(location.location['x']),int(location.location['y']),int(location.location['x'] + size['width']),int(location.location['y'] + size['height']))   # 获取验证码图片的坐标大小
i = Image.open('m3.png')   # 通过图像的方式打开保存的图片
imgry=i.crop(rangle)    # 截取验证码区域
imgry.save('getVerifyCode1.png')   # 保存验证码图片
im=Image.open('getVerifyCode1.png')   # 再次打开新截取的验证码图片
sharpness =ImageEnhance.Contrast(im)     #对比度增强,是图片中验证码更容易识别
#
sharp_img = sharpness.enhance(2.0)
#
sharp_img.save("newVerifyCode1.png")    # 保存优化过的验证码图片


with open('newVerifyCode1.png', 'rb') as f:
    img_bytes = f.read()   # 读取图片
res = ocr.classification(img_bytes)   # 获取图片中的字符
print(res)

2、代码演示结果

在这里插入图片描述
在这里插入图片描述
证明获取的验证码信息和图片中相同。

二、pytesseract方式实现验证码

1、安装pytesseract

python3 -m pip install pytesseract

2、安装tesseract

安装详情见:https://blog.csdn.net/weixin_44575268/article/details/117258508

3、代码示例

from selenium import webdriver
import time
from PIL import Image,ImageEnhance

import pytesseract

tesseract_cmd = r'/usr/local/bin/tesseract'
pytesseract.pytesseract.tesseract_cmd =tesseract_cmd
url = "要访问的页面"
options = webdriver.ChromeOptions()
options.add_argument("--headless")  # 开启无界面模式
options.add_argument('--no-sandbox')
options.add_argument("--disable-gpu")
options.add_argument('--disable-dev-shm-usage')  # linux上需要设置上面四项内容。
driver = webdriver.Chrome(chrome_options=options,executable_path='/usr/bin/chromedriver')

driver.get(url)  # 请求Url
driver.maximize_window()    # 全屏显示
driver.save_screenshot('m3.png')    # 截屏整个页面,并保存为图片
location = driver.find_element_by_xpath('//*[@id="login"]/div[5]/span')   # 获取验证码区域的坐标
# print(location.location)
size = location.size   # 坐标大小
# print(size)
rangle = (int(location.location['x']),int(location.location['y']),int(location.location['x'] + size['width']),int(location.location['y'] + size['height']))   # 获取验证码图片的坐标大小
i = Image.open('m3.png')   # 通过图像的方式打开保存的图片
imgry=i.crop(rangle)    # 截取验证码区域
imgry.save('getVerifyCode1.png')   # 保存验证码图片
im=Image.open('getVerifyCode1.png')   # 再次打开新截取的验证码图片
sharpness =ImageEnhance.Contrast(im)     #对比度增强,是图片中验证码更容易识别
#
sharp_img = sharpness.enhance(2.0)
#
sharp_img.save("newVerifyCode1.png")    # 保存优化过的验证码图片
#
 newVerify = Image.open('newVerifyCode1.png')
#
 mm = pytesseract.image_to_string(newVerify,'eng')
 print(mm)

4、示例结果

图片:
在这里插入图片描述
结果:
在这里插入图片描述
未识别出来。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-26 16:52:04  更:2022-06-26 16:52:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 16:01:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码