超级鹰的使用
超级鹰主要作用在我们利用selenium实现自动登录页面时往往会遇到图片类型的验证码,
而超级鹰的作用就是识别验证码返回给我们,下面看下具体的实现。
1.//www.chaojiying.com/user/login进入超级鹰登录页面注册账号
2.下载demo包
点击开发文档,在各语言sdk例子下载下,下载所需的语言包,这里以python为例
下载完成后解压会有一个chaojiying.py文件,将文件复制到你的项目下。复制完成如果你
的python版本是2无需改动,如果是3,需要在print加上括号。
3.获取软件id
4.导入chaojiying模块下的Chaojiying_Client类,调用PostPic方法完成识别
from chaojiying import Chaojiying_Client chaojiying = Chaojiying_Client('用户名', '密码', '软件id') im = open('需要识别的图片', 'rb').read() print(chaojiying.PostPic(im, 1902)) # 1902为识别的验证码类型
验证码在价格体系下查看,根据自己的所需查看
5.实例
from chaojiying import Chaojiying_Client chaojiying = Chaojiying_Client('你的用户名', '你的密码', ' 软件id') im = open('./img/a.jpg', 'rb').read() # 读取保存的图片 print(chaojiying.PostPic(im, 1902)) # 打印验证码
a.jpg为我本地保存的验证码图片
运行后发现错误,好东西往往是要收费的,没办法,只好斥资一块钱买个题分
{'err_no': -1005, 'err_str': '无可用题分', 'pic_id': '0', 'pic_str': '', 'md5': ''}
购买完题分后我们再次运行,发现可正常识别的内容在pic_str字段中,这时我们直接获取即可。
{'err_no': 0, 'err_str': 'OK', 'pic_id': '1190913450969630001', 'pic_str': '7261', 'md5': 'aa86ba819b38b65479e5ba42d477ab03'}
6.实践
我们以登录超级鹰页面为例
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("//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()
文章来源://www.cnblogs.com/lihongtaoya/ ,请不要转载