python爬虫模拟登录之图片验证码如何实现

发布时间:2022-08-05 10:44:10 作者:iii
来源:亿速云 阅读:214

这篇文章主要讲解了“python爬虫模拟登录之图片验证码如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python爬虫模拟登录之图片验证码如何实现”吧!

首先,打开百度智能云进行登入,再进入人工智能->文字识别里创建应用。

python爬虫模拟登录之图片验证码如何实现

在使用名称和底下应用描述随便写写,然后点立即创建。 

python爬虫模拟登录之图片验证码如何实现

python爬虫模拟登录之图片验证码如何实现

 创建完成,就可以拿到 AppID 、API Key 、Secret Key

python爬虫模拟登录之图片验证码如何实现

之后要在pycharm下载baidu-aip,然后导入AipOcr包。

from aip import AipOcr       #aip在baidu-aip中

 再然后就是初始化百度API

#百度API
APP_ID = '你的之前拿到的AppID'
API_KEY = '你的之前拿到的API Key'
Secret_Key = '你的之前拿到的Secret Key'

我们先要把 图片验证码下载下来进行二值化处理,这样识别的准确率高一些。

这里要下载pillow库,然后导入Image包

from PIL import Image         #PIL在pillow库中
    #图片处理
    # 二值化处理 灰度阈值设为127,高于这个值的点全部填白色
    img_old = Image.open('code.jpg')
    img_old = img_old.convert('L') # 灰度图 模式“L” 每个像素用8个bit表示,0表示黑,255表示白
    threshld = 127 #设置阈值,图片的像素范围(0,255)
    table = []
    for i in range(256):
        if i <threshld:
            table.append(0)
        else:
            table.append(1)
    img_old = img_old.point(table,'1') # 对图像像素操作 模式“1” 为二值图像,非黑即白。但是它每个像素用8个bit表示,0表示黑,255表示白
    img_old.save('code.jpg')

对于那些有干扰线,特别还是明暗交替的图片验证码来说,这样很好的避免了被干扰。

这里的图片中没有太多干扰线且也没有明暗交替所以看起来不明显,只是想让大家看看对比。

处理前

python爬虫模拟登录之图片验证码如何实现                                                                                                                     

处理后

python爬虫模拟登录之图片验证码如何实现

后面就是调用baidu_aip来读取图片中的内容。baidu_aip.handwriting

    #读取处理后的验证码
    with open('code.jpg','rb') as fp:
        img_new = fp.read()
    baidu_aip = AipOcr(APP_ID,API_KEY,Secret_Key)
    result = baidu_aip.handwriting(img_new)   #使用的是识别手写文字,返回一个字典,其中words_result是一个列表,里面有识别结果也是一个字典
    print('验证码是:',result['words_result'][0]['words'])

 baidu_aip.handwriting这里面有很多识别文字的方法,我用的是识别手写文字,如果大家使用这个方法感觉效果不好可以选择其他方法。

最后是完整的代码。

# -- coding:UTF-8 --
import requests
from PIL import Image
from aip import AipOcr
 
 
 
 
if __name__ == "__main__":
    #百度API
    APP_ID = '你的之前拿到的AppID'
    API_KEY = '你的之前拿到的API Key'
    Secret_Key = '你的之前拿到的Secret Key'
 
    headers = {
        "user-agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 97.0.4692.71Safari / 537.36Edg / 97.0.1072.55"
    }
    url = 'http://www.hyocr.com/captcha.php'
    #下载验证码图片
    session = requests.session()
    img_data = session.get(url=url,headers=headers).content
    with open('./code.jpg','wb') as fp:
        fp.write(img_data)
    #图片处理
    # 二值化处理 灰度阈值设为127,高于这个值的点全部填白色
    img_old = Image.open('code.jpg')
    img_old = img_old.convert('L') # 灰度图 模式“L” 每个像素用8个bit表示,0表示黑,255表示白
    threshld = 127 #设置阈值,图片的像素范围(0,255)
    table = []
    for i in range(256):
        if i <threshld:
            table.append(0)
        else:
            table.append(1)
    img_old = img_old.point(table,'1') # 对图像像素操作 模式“1” 为二值图像,非黑即白。但是它每个像素用8个bit表示,0表示黑,255表示白
    img_old.save('code.jpg')
 
    #读取处理后的验证码
    with open('code.jpg','rb') as fp:
        img_new = fp.read()
    baidu_aip = AipOcr(APP_ID,API_KEY,Secret_Key)
    result = baidu_aip.handwriting(img_new)   #使用的是识别手写文字,返回一个字典,其中words_result是一个列表,里面有识别结果也是一个字典
    print('验证码是:',result['words_result'][0]['words'])

python爬虫模拟登录之图片验证码如何实现

感谢各位的阅读,以上就是“python爬虫模拟登录之图片验证码如何实现”的内容了,经过本文的学习后,相信大家对python爬虫模拟登录之图片验证码如何实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. python爬虫之User Agent
  2. python爬虫豆瓣网的模拟登录实现

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:选择云计算首先要考虑哪些因素

下一篇:Pygame游戏开发之怎么实现太空射击实战子弹与碰撞

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》