失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python+selenium自动识别简单验证码实现自动登录

python+selenium自动识别简单验证码实现自动登录

时间:2023-11-03 07:16:53

相关推荐

python+selenium自动识别简单验证码实现自动登录

目录

一、所需要的库

二、实现过程

1.引入库

2.打开网站

3.查找元素

4.识别验证码并输入

5.点击登录按钮,完成登录

三、总结

1.完整代码

2.存在的问题

一、所需要的库

time 控制程序的运行时间

selenium 自动化测试工具

ddddocr 图片识别

当在安装ddddocr库时,可以通过镜像网站下载库

常用的镜像网站

清华:https://pypi.tuna./simple

阿里云:/pypi/simple/

中国科技大学 https://pypi.mirrors./simple/.

pip install ddddocr -i https://pypi.tuna./simple

二、实现过程

以古诗文网为例

1.引入库

import timeimport ddddocrfrom mon.by import Byfrom selenium import webdriver

2.打开网站

driver = webdriver.Chrome()driver.get('/user/login.aspx?from=/user/collect.aspx')time.sleep(2)

3.查找元素

按F12打开开发者模式,选择元素,#email即为账号的位置(这里使用CSS选择元素)

以此类推,将密码、验证码、验证码图片的位置找出来,将账号和密码输入进去。

name = driver.find_element(By.CSS_SELECTOR, "#email") # 账号输入框位置name.send_keys("******") # 输入你的账号pwd = driver.find_element(By.CSS_SELECTOR, "#pwd") # 密码输入框位置pwd.send_keys("******") # 输入你的密码code = driver.find_element(By.CSS_SELECTOR, "#code") # 验证码输入框位置imgCode = driver.find_element(By.CSS_SELECTOR, "#imgCode") # 验证码图片位置

4.识别验证码并输入

imgCode.screenshot("code.png") # 将验证码截图,保存为code.pngtime.sleep(1)# 以下为识别验证码的代码ocr = ddddocr.DdddOcr()with open("code.png", "rb") as fp:image = fp.read()catch = ocr.classification(image) # 验证码返回给catchcode.send_keys(catch) # 将识别到的验证码输入到框内time.sleep(1)

5.点击登录按钮,完成登录

login = driver.find_element(By.CSS_SELECTOR, "#denglu") # 找到登录的位置login.click() # 点击登录按钮time.sleep(1)

三、总结

1.完整代码

import timeimport ddddocrfrom mon.by import Byfrom selenium import webdriverdriver = webdriver.Chrome()driver.get('/user/login.aspx?from=/user/collect.aspx')time.sleep(2)name = driver.find_element(By.CSS_SELECTOR, "#email") # 账号输入框位置name.send_keys("******") # 输入你的账号pwd = driver.find_element(By.CSS_SELECTOR, "#pwd") # 密码输入框位置pwd.send_keys("******") # 输入你的密码code = driver.find_element(By.CSS_SELECTOR, "#code") # 验证码输入框位置imgCode = driver.find_element(By.CSS_SELECTOR, "#imgCode") # 验证码图片位置imgCode.screenshot("code.png") # 将验证码截图,保存为code.pngtime.sleep(1)# 以下为识别验证码的代码ocr = ddddocr.DdddOcr()with open("code.png", "rb") as fp:image = fp.read()catch = ocr.classification(image) # 验证码返回给catchcode.send_keys(catch) # 将识别到的验证码输入到框内time.sleep(1)login = driver.find_element(By.CSS_SELECTOR, "#denglu") # 找到登录的位置login.click() # 点击登录按钮time.sleep(1)

2.存在的问题

此网站的验证码较为简单,当遇到更加复杂的验证码时,需要写循环代码重新识别,重新登录,直到验证码正确、登陆成功为止。后续补充

如果觉得《python+selenium自动识别简单验证码实现自动登录》对你有帮助,请点赞、收藏,并留下你的观点哦!

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