2.2 计算题验证码

  • 计算题验证码与普通图像验证码的区别在于增加了数学运算,需要将验证码中数学计算题的结果填到文本框中,再单击“验证”。
  • 计算题验证码的处理难点在于运算符号的识别。如果将运算符号作为常规的图像文字进行识别,那么容易出现问题,例如,经常会把乘号或倾斜的加号识别为字母x,导致难以得到正确的计算结果。
  • 超级鹰有专门识别计算题或问答题的接口,如下图所示(详见https://www.chaojiying.com/price.html)。
    在这里插入图片描述
  • 具体到Python代码层面,只需修改前面定义的cjy()函数的代码,将其中的PostPic()函数的第二个参数改为6001,修改后代码如下,超级鹰会自动识别计算题并返回计算结果。
def cjy(): #使用超级鹰识别图像验证码的自定义函数
    chaojiying = Chaojiying_Client('账号', '密码', '932868')  # 用户中心>>软件ID
    im = open('a.png', 'rb').read()  # 打开本地图片文件,有时WIN系统须要//
    code = chaojiying.PostPic(im,6001)['pic_str']
    return code

在这里插入图片描述

from selenium import webdriver
browser = webdriver.Chrome()

from chaojiying import Chaojiying_Client
def cjy(): #使用超级鹰识别图像验证码的自定义函数
    chaojiying = Chaojiying_Client('超级鹰用户名', '超级鹰用户名的密码', '软件ID')  # 用户中心>>软件ID 
    im = open('a.png', 'rb').read()  # 打开本地图片文件,有时WIN系统须要//
    code = chaojiying.PostPic(im,6001)['pic_str']
    return code
    
#1.访问网址
url = r'D:\works\python_crawl1\《Python爬虫(进阶与进通)》代码汇总\2.验证码反爬\2.计算题验证码\英文图像验证码\index.html'
browser.get(url) #用模拟浏览器打开网页

#2. 截取验证码图片
browser.find_element_by_xpath('//*[@id="verifyCanvas"]').screenshot('a.png') #a.png是自己命令的图片名称

#3.通过超级鹰识别
result = cjy() #调用函数识别验证码,并将识别结果赋给变量result
print(result) #打印输出识别结果

# 4.输入验证码并完成验证
browser.find_element_by_xpath('//*[@id="code_input"]').send_keys(result) #模拟输入验证码
browser.find_element_by_xpath('//*[@id="my_button"]').click() #模拟单击"验证"按钮
  • 识别效果如下图所示,可以看到验证成功。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值