「本文目录」
1 分析登录界面结构
2 使用selenium打开登录页面
3 获取页面当前验证码图片
4 使用超级鹰识别验证码
5 对获取的坐标数据进行提取,并用动作链完成点击
1 分析登录界面结构
首先明确我们的目标,打开登陆界面,定位用户名和密码对应的标签,输入相关数据后,点击登录,此时页面会弹出验证码。
下面用两种方法进行验证码的获取,然后提交给「超级鹰」进行识别,接收到汉字的坐标后,处理数据,然后用动作链进行点击操作,最后定位点击确认,登陆成功。
2 使用selenium打开登录页面
「代码实现:」
3 获取页面当前验证码图片
3.1 方法一:页面截图,将验证码区域进行裁剪保存
使用此方法时,注意我们截取验证码图片时需要截取完整,完整验证码截图如下:
首先做的当然是将点击登录后的页面进行截图,然后定位到验证码的位置,通过location()方法获取验证码左上角的坐标,size()获取验证码的宽和高,左上角坐标加上宽和高就是验证码右下角的坐标。获取坐标后就可以用crop()方法来进行裁剪,然后将裁剪到的验证码图片保存。
此时虽然获取了验证码图片,但是还不能直接提交给超级鹰。
因为超级鹰识别的验证码图片的宽和高有限制,最好不超过460px*310px。
但是截取到的验证码图片宽高为338px*432px,这时就要先将图片缩小一倍再提交即可,等到收到坐标数据再将坐标乘2。
「代码实现:」
3.2方法二、通过网页获取图片地址,并保存
这种方法比上一种更加方便,分析网页源码获取图片地址,对该地址发送请求,接收返回的二进制文件,进行保存。首先打开网页源码找到图片地址。
图片地址是img标签的src属性值,通过xpath得到地址,直接对此url发送请求,接收数据并保存即可。
「注意:」由于获取的图片的高度仍然大于超级鹰标准格式,所以也需要将图片缩小。
「代码实现:」
4 使用超级鹰识别验证码
这部分没什么说的,直接调用就行。
「代码如下:」
5 对获取的坐标数据进行提取,并用动作链完成点击
超级鹰识别返回的数据格式是:123,12 | 234,21。
我们可以将数据以' | '进行分割,保存到列表中,再以逗号分割将x,y的坐标保存,得到[ [123,12],[234,21] ]这一格式,然后遍历这一列表,使用动作链对每一个列表元素对应的x,y指定的位置进行点击操作,最后定位并点击确认,登录成功。
「代码实现:」
更多阅读
领取专属 10元无门槛券
私享最新 技术干货