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

  

相关推荐
Lyn_Li2 小时前
扫描 PDF 歪了怎么办?用 6 种检测方法做本地批量扶正(附开源工具)
python·pdf·ocr·tesseract·开源工具·文档处理·本地处理·扫描件纠偏
白帽小丑2 小时前
# 一次 MySQL DELETE 误操作的数据恢复尝试实录
数据库·mysql
金銀銅鐵3 小时前
费马小定理
python·数学·算法
Dxy12393102163 小时前
MySQL索引完整教程:创建、查看、修改、删除与日常管理
前端·javascript·mysql
Quincy_Freak5 小时前
信创内网数据规范实践:银河麒麟下SQLite本地数据安全管理方案
数据库·sqlite·arm·数据库管理·大数据分析·银河麒麟·aarch64
至乐活着6 小时前
MySQL索引底层原理与查询优化实战:从B+树到执行计划
mysql·b+树·查询优化·sql性能·索引原理
疋瓞7 小时前
python和C++对比(1)_数据类型和数据结构
数据结构·c++·python
2601_962683897 小时前
治理遗留系统中的“生肉 SQL”:一次用多模型协作优化慢查询的实战复盘
数据库·人工智能·sql
酱学编程7 小时前
【从零到一实现一个 AI Agent 框架 · 第四篇】04. 任务规划:拆解复杂目标 -
服务器·网络·数据库·人工智能
如此这般英俊8 小时前
手搓Claude Code-第六章 subagent
数据结构·人工智能·python·语言模型·自然语言处理