Python爬虫过程中验证码识别的三种解决方案(爬虫怎么过验证码)

网友投稿 2510 2022-09-17

Python爬虫过程中验证码识别的三种解决方案(爬虫怎么过验证码)

Python爬虫过程中验证码识别的三种解决方案(爬虫怎么过验证码)

在Python爬虫过程中,有些网站需要验证码通过后方可进入网页,目的很简单,就是区分是人阅读访问还是机器爬虫。验证码问题看似简单,想做到准确率很高,也是一件不容易的事情。为了更好学习爬虫,后续推文中将会更多介绍爬虫问题的解决方案。本篇推文将分享三种解决验证码的方法,如果你有比较好的方案,欢迎留言区讨论交流,共同进步。

1.pytesseract

pytesseract是google做的ocr库,可以识别图片中的文字,一般用在爬虫登录时验证码的识别,在安装pytesseract环境过程中会遇到各种坑的事情,如果你需要安装,可以按照如下流程去做,避免踩坑。下面以 mac为例。

1.安装方法

2.此外,还需安装Tesseract,它是一个开源的OCR引擎,能识别100多种语言。

3.查看安装位置为

4.配置环境变量

5.如何出现如下报错

6.修改pytesseract.py的cmd

先验证一个简单的验证码

代码如下

结果输出

再换一张试一下

输入代码后,结果错误输出为

由此看出,pytesseract对于简单方法有效,并不像有些人写的这么好,当然可以通过灰度、二值等方法,效果并不是很理想,稍微复杂的需要寻找其他解决方案,如果解决上述问题呢,我们看下面的解决方案。

2.百度OCR接口

调用百度OCR接口(代码示例)

上述方案没解决的问题,调用此方法试一下,可以顺利解决。

那么对于更复杂的验证码呢?

首先直接调用结果输出

结果把干扰线识别出来Y和-,可以看出百度OCR接口对复杂验证码能识别,但是对干扰线的问题,无法解决。如何解决上述问题呢?对于复杂的验证码,我们是不能直接调用,我们先做一些预处理:灰度、二值化等。

再次调用接口

上述问题得到了解决。对于超级变态的验证码如何解决呢?几个0?几个O?下面提供一种深度学习解决方案。

3.深度学习

深度学习验证码识别可能并不适合所有人,原因很简单,首先不是每个人都有算法基础。其次小编亲自测试来一下,cpu资源的消耗也非常高,如果你有云端资源可以跑一下。深度学习的验证码识别,我这边介绍一下解决方案的思路,目前企业级的验证识别更为复杂。

1.搭建基于keras框架的深度学习模型

2.模型训练

3.测试模型

4.结果展示

结论

验证码识别问题正如推文开头所说,看似简单,实际上远比想象的要复杂的多。有些解决方案也可能是针对性解决方案。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:从一次Windows网络编程排错经历中得出的一个可靠拆包算法
下一篇:VS Code 无法激活conda虚拟环境
相关文章

 发表评论

暂时没有评论,来抢沙发吧~