目前,许多网站采取各种各样的措施来反爬虫,其中一个措施便是使用验证码。随着技术的发展,验证码的花样越来越多。验证码由最初的几个数字组合的简单的图形验证码,后来加入了英文字母和混淆曲线。有的网站还可以看到中文字符的验证码,这使得识别愈发困难。
现在交互式验证码越来越多,如滑动验证码,需要滑动拼合滑块才可以完成验证,点触验证码需要完全点击正确的结果才可以完成验证,另外还有滑动宫格验证码、计算题验证码等等。
验证码变得越来越复杂,爬虫的工作也变得愈发困难。有时候我们必须通过验证码的验证才能访问页面。
本次分享的知识就是教会大家验证码的识别做讲解。
我们首先做最简单的一种验证码,即图形验证码。这种验证码出现的最早,现在也很常见,一般由4位字母或数字组成。
举个简单的例子,中国知网的注册页面就有类似的验证码。网页链接如下:
识别图形需要用到库:tesserocr。
在爬虫过程中,难免会遇到各种各样的验证码,有些验证码就是图形验证码,这个时候我们可以直接使用OCR来识别。
1、OCR
0CR,即Opticla Character Recognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。对于图片验证码来说,它们都是一些不规则的字符,这些字符确实是由字符稍加扭曲变换得到的内容。
tesserocr是Python一个OCR识别库,但其实对于一个tesseract做的一层Python API封装,所以它的核心是tesseract。因此,在安装tesserocr之前,我们需要先安装tesseract。
下载链接如下:
为了防止安装错误,可以直接安装whl文件,安装这个库对版本要求比较高。下载链接如下:
为了便于实验,我们先将验证码的图片保存下来。
打开开发者工具,找到验证码元素。验证码元素是一张图片,这张图片的链接是:
首先创建了一个image对象,然后调用了tesserocr下的image_to_text()方法。传入该image对象即可完成识别。
然而,有些时候也难免会识别错误。因此,我们需要对图片再做处理,如转灰度、二值化操作。
我们可以利用Image对象的convert()方法传入参数L,即可将图片转化为灰度图像。
具体代码,如下所示:
传入1即可将图片进行二值化处理,如下所示:
我们还可以指定二值化的阀值。上面的方法采用的是默认阀值127.不过,我们不能直接转化为原图,首先要将原图先转为灰度图像,然后再制定阀值,当我们把验证码中的线条都去掉之后再重新来识别图片,会更加准确。
具体代码,如下所示:
公众号回复【图片验证码】即可获取。
没有什么事情是可以一蹴而就的,生活如此,学习亦是如此!
因此,哪里会有什么三天速成,七天速成的说法呢?
唯有坚持,方能成功!
啃书君说:
文章的每一个字都是我用心敲出来的,只希望对得起每一位关注我的人。在文章末尾点【赞】,让我知道,你们也在为自己的学习拼搏和努力。
路漫漫其修远兮,吾将上下而求索。
本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:975644476@qq.com
本文链接:http://chink.83seo.com/news/571.html