python图片验证码识别selenium爬虫--超级鹰实现自动登录,滑块,点击

超级鹰的使用

超级鹰主要作用在我们利用selenium实现自动登录页面时往往会遇到图片类型的验证码,

而超级鹰的作用就是识别验证码返回给我们,下面看下具体的实现。

1.https://www.chaojiying.com/user/login进入超级鹰登录页面注册账号

2.下载demo包

点击开发文档,在各语言sdk例子下载下,下载所需的语言包,这里以python为例

下载完成后解压会有一个chaojiying.py文件,将文件复制到你的项目下。复制完成如果你

的python版本是2无需改动,如果是3,需要在print加上括号。

3.获取软件id

4.导入chaojiying模块下的Chaojiying_Client类,调用PostPic方法完成识别

|-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 | from chaojiying ``import Chaojiying_Client chaojiying ``= Chaojiying_Client(``'用户名'``, ``'密码'``, ``'软件id'``) im ``= open``(``'需要识别的图片'``, ``'rb'``).read() print``(chaojiying.PostPic(im, ``1902``)) ``# 1902为识别的验证码类型 |

验证码在价格体系下查看,根据自己的所需查看

5.实例

|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 | from chaojiying ``import Chaojiying_Client chaojiying ``= Chaojiying_Client(``'你的用户名'``, ``'你的密码'``, ``' 软件id'``) im ``= open``(``'./img/a.jpg'``, ``'rb'``).read() ``# 读取保存的图片 print``(chaojiying.PostPic(im, ``1902``)) ``# 打印验证码 |

a.jpg为我本地保存的验证码图片

运行后发现错误,好东西往往是要收费的,没办法,只好斥资一块钱买个题分

|---|------------------------------------------------------------------------------------------------------------------------|
| 1 | {``'err_no'``: ``-``1005``, ``'err_str'``: ``'无可用题分'``, ``'pic_id'``: ``'0'``, ``'pic_str'``: '``', '``md5``': '``'} |

购买完题分后我们再次运行,发现可正常识别的内容在pic_str字段中,这时我们直接获取即可。

|---|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 | {``'err_no'``: ``0``, ``'err_str'``: ``'OK'``, ``'pic_id'``: ``'1190913450969630001'``, ``'pic_str'``: ``'7261'``, ``'md5'``: ``'aa86ba819b38b65479e5ba42d477ab03'``} |

6.实践

我们以登录超级鹰页面为例

|-------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import time from selenium ``import webdriver from selenium.webdriver.common.by ``import By from chaojiying ``import Chaojiying_Client driver ``= webdriver.Chrome() driver.implicitly_wait(``10``) ``# 设置全局等待 driver.get(``"https://www.chaojiying.com/user/login/"``) ``# 打开登录页面 driver.find_element(by``=``By.NAME, value``=``"user"``).send_keys(``"你的用户名"``) ``# 填写用户名 driver.find_element(by``=``By.NAME, value``=``"pass"``).send_keys(``"你的密码"``) ``# 填写密码 img_list ``= driver.find_elements(by``=``By.TAG_NAME, value``=``"img"``) # img_url = img_list[2].get_attribute("src") # 获取验证码图片地址 img ``= img_list[``2``].screenshot_as_png ``# 截取定位元素位置的图 # with open("./img/img.png", mode="wb")as f: # f.write(requests.get(img_url).content) # 将图片保存到本地 chaojiying ``= Chaojiying_Client(``'你的用户名'``, ``'你的密码'``, ``' 软件id'``) # im = open("./img/img.png", 'rb').read() # 读取保存的图片 data ``= chaojiying.PostPic(img, ``1902``) ``# 打印验证码 data ``= data[``"pic_str"``] ``# 获取验证码 driver.find_element(by``=``By.NAME, value``=``"imgtxt"``).send_keys(data) ``# 填写验证码 time.sleep(``3``) driver.find_element(by``=``By.CLASS_NAME, value``=``"login_form_input_submit"``).click() ``# 点击登录 time.sleep(``2``) driver.quit() |

  

相关推荐
oradh3 小时前
Oracle普通表改造分区表的方法总结
数据库·oracle·普通表改造分区表
Gent_倪3 小时前
MySQL 与 Hive 语法异同点详解
数据库·hive·mysql
七夜zippoe3 小时前
DolphinDB 故障排查实战:系统、数据库与集群常见问题诊断
数据库·wpf·集群·常见问题·故障排查·dolphindb
老周聊架构3 小时前
Flink 连接器与生态:Kafka Offset 提交修复与 MySQL Binlog 延迟指标
mysql·flink·kafka
E_ICEBLUE3 小时前
为 Excel 工作簿和工作表设置密码保护【Python教程】
python·excel
!chen4 小时前
数据库主从有延迟怎么处理
数据库·adb
SelectDB技术团队4 小时前
Apache Doris 多云原生实践:SaaS、BYOC 与四大公有云覆盖
数据库·阿里云·云原生·华为云·腾讯云·亚马逊云·写入更新
云飞云共享云桌面6 小时前
医疗器械设备研发:多人同时操作 SolidWorks,怎样依靠单台服务器替代多工作站
运维·服务器·网络·数据库·制造
Sylvia33.6 小时前
LOL实时数据接入深度解析:从WebSocket到完整数据模型
java·网络·python·websocket·网络协议
梦想不只是梦与想6 小时前
Web 服务器网关协议:ASGI 和 WSGI
服务器·python·fastapi