Web数据爬虫中简单验证码的识别

Web数据爬虫中简单验证码的识别

Python在爬虫的时候会遇到一些验证码问题,今天就以简单的验证来进行说明,再次之前需要安装一些东西,Windows系统需要安装tesseract,然后安装tessercor。

通过pycharm终端安装

通过这个方式安装,不需要考虑环境变量的问题,我们直接打开pycharm终端,进入到pip目录下,一般就是venv/scripts目录,输入代码:

pip install --default-timout=5000 tesseract

tesseract比较大,所以使用pip不加超时时间就百分百安装不上,那么我们在以后需要安装某个库的时候,在pycharm中就可以使用这种方式,比较暴力。之后就是安装tesserocr,这个需要从官网下载tesseract对应的版本才行,下载地址:https://github.com/simonflueckiger/tesserocr-windows_build/releases。比如我的Python版本是3.7,电脑是Windows64位,所以我下载的是:tesserocr-2.4.0-cp37-cp37m-win_amd64.whl。下载完之后在pycharm中使用pip进行安装:

pip install C:\Users\Administrator\Desktop\tesserocr-2.4.0-cp37-cp37m-win_amd64.whl

如果你下载放在桌面上,直接就可以使用上面的命令安装,就完了。

tesserocr的安装问题还是比较多的,采用命令行安装tesseract(这个不用考虑路径,环境变量问题),然后在安装tesserocr即可

但是最后在运行代码的时候报错找不到tessdata文件,所以说还是按照网上普便的教程,首先下载安装tesseract,然后在安装tesserocr,我这里也是下载把这个tessdata拖到Python目录中,不存在环境变量了,自己按照情况来。

简单验证码

验证码的接口:http://my.cnki.net/Register/CheckCode.aspx?id=1541251235676,这类Web数据爬虫中简单验证码的识别验证码是非常简单的一种,我们具体通过代码来识别一下,代码参考:


import tesserocr
from PIL import Image
for i in range(1,2):
    str='{}.jpg'.format(i)
    image=Image.open(str)
    result=tesserocr.image_to_text(image).strip()
    print(result)

那么或者可以使用下面的代码:


import tesserocr

for i in range(1,2):
    str='{}.jpg'.format(i)
    result=tesserocr.file_to_text(str).strip()
    print(result)

但是效果都是非常差,你可以测试10个验证码,正确率20%,那么使用下面的代码正确率会高一点,50%左右吧

from PIL import Image

for i in range(1,2):
    str='{}.jpg'.format(i)
    image=Image.open(str)
    image=image.convert('L')
    threshold=127
    table=[]
    for i in range(256):
        if i<threshold:
            table.append(0)
        else:
            table.append(1)
    result=image.point(table,'1')
    print(result)
    result.show()
 
分享到 :

发表评论

登录... 后才能评论