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

相关推荐
智商偏低1 小时前
Postgresql导入几何数据(shp,geojson)的几种方式
数据库·postgresql
iFeng的小屋2 小时前
【2026最新当当网爬虫分享】用Python爬取千本日本相关图书,自动分析价格分布!
开发语言·爬虫·python
民乐团扒谱机2 小时前
【微科普】3D 演奏蠕虫分析图:解码音乐表演情感的 “可视化语言”
python·可视化·音乐·3d图·3d蠕虫
芝士爱知识a2 小时前
AlphaGBM 深度解析:下一代基于 AI 与蒙特卡洛的智能期权分析平台
数据结构·人工智能·python·股票·alphagbm·ai 驱动的智能期权分析·期权
我是Superman丶2 小时前
在 PostgreSQL 中使用 JSONB 类型并结合 MyBatis-Plus 实现自动注入,主要有以下几种方案
数据库·postgresql·mybatis
五度易链-区域产业数字化管理平台2 小时前
「五度易链」行业标准信息数据库简介
大数据·数据库
qinyia2 小时前
通过本地构建解决Cartographer编译中absl依赖缺失问题
linux·运维·服务器·mysql·ubuntu
霖霖总总2 小时前
[小技巧65]深入 InnoDB 页的逻辑存储结构:16KB 页的逻辑全景解析
数据库·mysql