郴州网站seo,微信公众号怎么创建文章,泰州市建设监理协会网站,通辽市做网站公司订阅#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列#xff08;零基础小白搬砖逆袭) 说明#xff1a;本专栏持续更新中#xff0c;订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明作者#xff1… 订阅新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列零基础小白搬砖逆袭) 说明本专栏持续更新中订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明作者爱吃饼干的小白鼠。Python领域优质创作者2022年度博客新星top100入围荣获多家平台专家称号。 最近更新 〖Python网络爬虫实战㉝〗- aiohttp 的基本使用 前言 目前许多网站采取各种各样的措施来反爬虫其中一个措施便是使用验证码。随着技术的发展验证码的花样越来越多。验证码最初是几个数字组合的简单的图形验证码后来加入了英文字母和混淆曲线。有的网站还可能看到中文字符的验证码这使得识别愈发困难。 后来 12306 验证码的出现使得行为验证码开始发展起来用过 12306 的用户肯定多少为它的验证码头疼过。我们需要识别文字点击与文字描述相符的图片验证码完全正确验证才能通过。现在这种交互式验证码越来越多如极验滑动验证码需要滑动拼合滑块才可以完成验证点触验证码需要完全点击正确结果才可以完成验证另外还有滑动宫格验证码、计算题验证码等。 验证码变得越来越复杂爬虫的工作也变得愈发艰难。有时候我们必须通过验证码的验证才可以访问页面。本章就专门针对验证码的识别做统一讲解。 接下来会涉及的验证码有普通图形验证码、极验滑动验证码、点触验证码、微博宫格验证码这些验证码识别的方式和思路各有不同。了解这几个验证码的识别方式之后我们可以举一反三用类似的方法识别其他类型验证码。 环境使用
python 3.9pycharm
图形验证码的识别 我们首先识别最简单的一种验证码即图形验证码。这种验证码最早出现现在也很常见一般由 4 位字母或者数字组成。例如某某网站的注册页面有类似的验证码。 一般来说表单的最后一项就是图形验证码我们必须完全正确输入图中的字符才可以完成注册和登录。
1. 本节目标 以某网站的验证码为例讲解利用 OCR 技术识别图形验证码的方法。
2. 准备工作 识别图形验证码需要库 tesserocr。本文文末有安装教程。
3. 获取验证码 为了便于我们的实验测试我们先将验证码的图片保存到本地。 打开开发者工具找到验证码元素。验证码元素是一张图片它的 src 属性是 CheckCode.aspx。可以看到一个验证码右键保存即可将其命名为 yzm.jpg。 这样我们就可以得到一张验证码图片以供测试识别使用。
4. 识别测试 接下来新建一个项目将验证码图片放到项目根目录下用 tesserocr 库识别该验证码代码如下所示
import tesserocr
from PIL import Imageimage Image.open(yzm.jpg)
result tesserocr.image_to_text(image)
print(result) 在这里我们新建了一个 Image 对象调用了 tesserocr 的 image_to_text() 方法。传入该 Image 对象即可完成识别实现过程非常简单结果如下所示JR42。是不是很神奇。
5.验证码处理 接下来我们换一个验证码将其命名为 code.jpg 重新运行上面的代码输出FFKT。 这次识别和实际结果有偏差这是因为验证码内的多余线条干扰了图片的识别。 对于这种情况我们还需要做一下额外的处理如转灰度、二值化等操作。我们可以利用 Image 对象的 convert() 方法参数传入 L即可将图片转化为灰度图像代码如下所示
image image.convert(L)image image.convert(1)image.show() 我们还可以指定二值化的阈值。上面的方法采用的是默认阈值 127。不过我们不能直接转化原图要将原图先转为灰度图像然后再指定二值化阈值代码如下所示
image image.convert(L)
threshold 80
table []
for i in range(256):if i threshold:table.append(0)else:table.append(1)image image.point(table, 1)
image.show() 运行之后就会得到我们想要的处理结果。而且我们发现原来验证码中的线条已经去除整个验证码变得黑白分明。这时重新识别验证码再次运行上面的代码就可以得到我们要的验证码。 那么针对一些有干扰的图片我们做一些灰度和二值化处理这会提高图片识别的正确率。
tesserocr库安装 在这里我和大家简单介绍一下这个库的安装教程。
1.tesseract软件的安装 在win10下安装tesseract可以进入该网址进行下载 https://digi.bib.uni-mannheim.de/tesseract/ 其中文件名中带有dev的为开发版本不带dev的为稳定版本可以选择下载不带dev的版本。例如可以选择下载tesseract-ocr-win64-setup-v5.3.0.20221214.exe。 下载完成后打开下载文件其中可以勾选Additional language data(download)选项来安装OCR识别支持的语言包以便OCR识别多国语言。(也可以在选项中只勾选chinese)
2.环境配置 在系统变量里修改path添加你安装tesserocr的路径。在系统变量里创建一个新的变量名为:TESSDATA_PREFIX值为:D:\Program Files(X86)\Tesseract-OCR\tessdata(根据自己安装的tesserocr安装路径为准)。
3、安装tesseracr包
- 尝试pip安装 pip install tesserocr - 如果不成功则尝试通过.whl文件安装。
下载地址https://github.com/simonflueckiger/tesserocr-windows_build/releases 这里就不介绍whl怎么安装的了不会的私信评论。
TIP: tesserocr也只是识别手段的一种如果需要高精度的识别可以尝试TensorFlow实现深度学习模型通过训练模型来识别图形验证码。