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() |

  

相关推荐
青 春 记 忆6 分钟前
零基础入门python07:让程序记住数据——JSON文件和异常处理
开发语言·windows·python·json·python3.11
weixin_431600447 分钟前
NestJS 入门(9):连上数据库,SQL 写在哪?
数据库·后端·sql·学习·nest.js
清水白石00816 分钟前
Python 如何设计一个线程安全的缓存?从锁策略、LRU 到工程化实战
python·安全·缓存
qq_225891746620 分钟前
基于Flask的城市地铁客流量数据预测系统设计与实现
后端·python·flask
W_3260028 分钟前
Python 常用标准 / 第三方库:random、tqdm、turtle、jieba 用法
开发语言·python
OptimizationMaster33 分钟前
Python对视频文件分类,“横屏”和“竖屏”
python·视频
math_hongfan34 分钟前
一对多的数据库姻缘:ArkTS 为鸿蒙订单设计外键与明细表
数据库·华为·harmonyos
城管不管38 分钟前
MySQL 慢查询完整排查
java·服务器·jvm·数据库·mysql·spring·面试
XLYcmy39 分钟前
PDF论文处理器 - 功能总结
数据库·python·pdf·csv·pymupdf·dify·文本分割