好友
阅读权限25
听众
最后登录1970-1-1
|
打个广告ddddocr乃真神器,用起来太简单了。
先用简单验证码网站练习练习。
验证码刷新会变,直接保存也和登录页面上的不同,因此先截图后识别。
直接上代码,不到之处,请大神指正
[Python] 纯文本查看 复制代码 from selenium import webdriver
import ddddocr
from selenium.webdriver.chrome.service import Service
from PIL import Image
from time import sleep
from webdriver_manager.chrome import ChromeDriverManager
if __name__ == '__main__':
# 1、自动安装对应版本的Webdriver
s = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=s)
# 2、打开指定的网页,设置浏览器全屏化、并截图
driver.get("http://demo.jizhicms.cn/admin.php/Login/index.html")
driver.maximize_window()
sleep(0.5)
driver.save_screenshot('aa.png')
# 3、获取验证码的网页上面的坐标
code_png_lel = driver.find_element_by_id('vercodeimg')
location = code_png_lel.location
print('location', location)
# 4、获取验证码的长宽
size = code_png_lel.size
print('size', size)
# location获取是根据百分之百缩放的,如果有缩放需按比例调整
k = 1
# 图片左上角和右下角的xy坐标
rangle = (
int(location['x']) * k, int(location['y']) * k, int(location['x'] + size['width']) * k,
int(location['y'] + size['height']) * k
)
print('rangle', rangle)
# 5、对全局页面进行截图获取局部验证码
i = Image.open('./aa.png')
# 按照给定xy坐标裁剪
frame = i.crop(rangle)
frame.save('./code.png')
# 6、利用弟弟获取验证码
ocr = ddddocr.DdddOcr(old=True)
with(open("code.png", 'rb')) as g:
image = g.read()
code = ocr.classification(image)
print(code)
# 7、填写账号和验证码(已保存的可不填)
# driver.find_element_by_name("username").send_keys("test")
# driver.find_element_by_name("password").send_keys("123456")
driver.find_element_by_name("vercode").send_keys(code)
sleep(0.2)
# 8、登录
driver.find_element_by_xpath("//form[@class='layui-form']/input[last()]").click()
sleep(5)
# 9、关闭浏览器并退出
driver.close() |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|