2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > python(自动化)利用selenium+百度ocr文字识别验证码实现自动登陆登陆CET-四级报名系统

python(自动化)利用selenium+百度ocr文字识别验证码实现自动登陆登陆CET-四级报名系统

时间:2023-12-12 21:25:10

相关推荐

python(自动化)利用selenium+百度ocr文字识别验证码实现自动登陆登陆CET-四级报名系统

操作步骤:

1:登陆打开CET-考试系统

2:填写相关登陆信息

3:调用百度ocr实现文字验证码识别

4:实现登陆

如何使用和调用百度ocr文字识别接口

1:进入百度AI开发平台:链接

2:在页面上选择进入控制台:

3:登陆百度账号(没有百度账号的需要先注册)

4:进来后点击文字识别

5:进来后再点击创建应用(这里我已创建好)

6:获取我门需要的三个信息,后面代码需要用到

即AppID,APIkey,SecretKey

代码需要用到的python库

1: selenium

2: time(时间模块,用于适当的时间加载限制)

3:PIL(图像处理模块,也可用Open-cv模块代替实现相关需求)

4: baidu-aip模块

少数人可能在from aip import AipOcr 这段代码就报错了,原因是你没有安装百度的接口,不过没关系,你只需要用cmd进入你安装Python的路径下执行 pip install baidu-aip 即可!

下面进入代码环节(有注释):

#利用百度ocr识别自动登陆四级考试网并进入报名页面from selenium import webdriverfrom time import sleepfrom PIL import Imagefrom aip import AipOcrfrom selenium.webdriver.support.select import Selectfrom mon.exceptions import UnexpectedAlertPresentException#驱动的加载和访问页面driver = webdriver.Chrome()driver.maximize_window()#设置页面加载时间driver.set_page_load_timeout(20)driver.set_script_timeout(20)#CET-考试系统网址url = 'http://cet-bm./'driver.get(url)#点击进入报名页面driver.find_element_by_xpath('//*[@id="main_l"]/a[1]/p[1]').click()#填写相关信息username = '######' #这里填写你的登陆用户名,如手机号password = '#####' #这里输入你的登陆密码driver.find_element_by_xpath('//*[@id="txtUserName"]').send_keys(username)driver.find_element_by_xpath('//*[@id="txtPassword"]').send_keys(password)driver.implicitly_wait(3) #隐式等待"""截屏并调用百度ocr文字识别输入验证码"""while True:driver.find_element_by_xpath('//*[@id="txtCheckImageValue"]').clear() #每次执行前清空输入栏screenImg = r'D:\python\1.png' #截图图片的存储路径,我这里放入我的相关目录,你也可以更改r'###'的内容#截图整个窗口的图,据此后面再根据坐标信息截图特定验证码位置的图driver.get_screenshot_as_file(screenImg)#获取验证码图片的位置坐标信息location = driver.find_element_by_xpath('//*[@id="imgCheckImage"]').location#获取验证码图片的尺寸大小size = driver.find_element_by_xpath('//*[@id="imgCheckImage"]').size#获取截图所需的位置信息left = int(location['x'])top = int(location['y'])right = int(location['x']+size['width'])bottom = int(location['y']+size['height'])#由上面的坐标信息截图特定区域,得到验证码截图img = Image.open(screenImg).crop((left,top,right,bottom))img.save(screenImg)#定义百度ocr相关变量,将你的前面百度复制三个信息填入其中AppID = '#########'APIKey = '##########'SecretKey = '#########'#初始化操作client = AipOcr(AppID,APIKey,SecretKey)i = open(screenImg,'rb') #以rb方式打开目标路径图片即验证码截图img = i.read() #读取截图message = client.basicGeneral(img)print(message)for i in message.get('words_result'):print(i,i.get('words'))if message.get('words_result') != []:driver.find_element_by_xpath('//*[@id="txtCheckImageValue"]').send_keys(i.get('words'))else:driver.find_element_by_xpath('//*[@id="txtCheckImageValue"]').send_keys('识别不出来')#判断登陆情况据此执行不同操作try:#点击登陆按钮driver.find_element_by_xpath('//*[@id="ibtnLogin"]').click()if u'欢迎使用CET考试报名系统' not in driver.title:print("窗口弹出,验证码错误")#由于登陆失败会弹出对话框,下面是处理弹出的对话框alert = driver.switch_to.alertsleep(2)alert.accept()else:print("登陆成功!!")breakexcept UnexpectedAlertPresentException:print("重新登陆......")driver.implicitly_wait(3)#注意重新登陆尝试需要对几个输入框都清空username = "#######" #这里输入你的用户名password = "######" #这里输入你的密码driver.find_element_by_xpath('//*[@id="txtUserName"]').clear()driver.find_element_by_xpath('//*[@id="txtUserName"]').send_keys(username)driver.find_element_by_xpath('//*[@id="txtPassword"]').clear()driver.find_element_by_xpath('//*[@id="txtPassword"]').send_keys('password')print("恭喜,您已成功通过识别验证码")

The End!!创作不易,欢迎点赞/评论!!欢迎关注个人公众号

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。