目录
- 前言
- 环境使用:
- 模块使用:
- 代码展示
- 图片验证码
- 滑动验证码:
- 点选验证:
- 尾语 💝
前言
嗨喽~大家好呀,这里是魔王呐 ❤ ~!
环境使用:
-
Python 3.8 解释器
-
Pycharm 编辑器
模块使用:
-
selenium --> pip install selenium==3.141.0
-
ddddocr --> pip install ddddocr
代码展示
导入模块
# from selenium import webdriver
# from selenium.webdriver import ActionChains
# from password import account_train, password_train
# # 导入时间模块
# import time
- 打开浏览器
# driver = webdriver.Chrome()
# # 绕过检测
# driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",
# {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})
- 访问网站
# driver.get('https://kyfw.12306.cn/otn/resources/login.html')
-
登陆账号密码, 点击登陆
-
先定位输入框<元素定位>, 然后再输入内容
I. css选择器
II. xpath节点提取
-
网站检测到了, 你在使用selenium --> 绕过检测
# # 通过 CSS 选择器查找元素
# driver.find_element_by_css_selector('#J-userName').send_keys('账号')
# driver.find_element_by_css_selector('#J-password').send_keys('密码')
# driver.find_element_by_css_selector('#J-login').click()
-
<出现验证码> --> 滑动操作就可以了
I. 按住滑块 --> 鼠标动作链
II. 滑动滑块 --> 滑到哪里呢?
网页元素还没加载出来, 你就去定位元素, 找不到…
延时
# time.sleep(1)
定位滑块元素
# h = driver.find_element_by_css_selector('#nc_1_n1z')
# action = ActionChains(driver)
# # perform() 执行操作
# action.click_and_hold(h).perform()
# action.move_by_offset(85, 0)
# action.move_by_offset(85, 0)
# action.move_by_offset(85, 0)
# action.move_by_offset(85, 0)
# # 释放
# action.release().perform()
图片验证码
-
img\img.png 相对路径
-
D:\自游\验证码识别\img\img.png 绝对路径
-
mode=‘rb’ 以二进制方法读取数据内容
ddddocr 缺点: 识别准确率不是很高
导入识别模块
import ddddocr
实例化对象
ocr = ddddocr.DdddOcr()
读取图片内容
f = open('img\\img_1.png', mode='rb')
img = f.read()
result = ocr.classification(img)
print(result)
滑动验证码:
12306网站滑动验证码
selenium 模块自动化测试模块
selenium --> 浏览器驱动 --> 浏览器 <模拟人的行为去操作流程>
selenium 默认安装是4.0版本 语法和3.0不同 pip install selenium==3.141.0
-
谷歌浏览器
-
谷歌驱动 --> 版本选择 和你浏览器版本最相近就可以了
下载好了之后解压就可以了, 不需要双击安装
-
打开浏览器
-
驱动路径:
I. 驱动文件在python安装目录下 <不需要添加路径>
II. 驱动文件和代码放在一起 <不需要添加路径>
III. 写驱动路径 绝对路径
-
-
访问网站
-
登陆账号密码, 点击登陆
-
<出现验证码> --> 滑动操作就可以了
点选验证:
模拟登陆
from selenium import webdriver
from selenium.webdriver import ActionChains
import time
from password import VideoAccount, VideoPassword, account, password
from chaojiying import Chaojiying_Client
driver = webdriver.Chrome()
driver.get('https://*****/')
driver.find_element_by_css_selector('.header-login-entry').click()
time.sleep(1)
driver.find_element_by_css_selector('.tab__form div:nth-child(1) input').send_keys(VideoAccount)
driver.find_element_by_css_selector('.tab__form div:nth-child(3) input').send_keys(VideoPassword)
driver.find_element_by_css_selector('div.btn_primary').click()
"""
对接打码平台 --> 超级鹰
"""
time.sleep(2)
img = driver.find_element_by_css_selector('.geetest_item.geetest_big_item')
img.screenshot('yzm.png')
im = open('yzm.png', 'rb').read()
chaojiying = Chaojiying_Client(account, password, '96001')
pic_str = chaojiying.PostPic(im, 9004)['pic_str']
for index in pic_str.split('|'):
x = index.split(',')[0]
y = index.split(',')[1]
action = ActionChains(driver)
action.move_to_element_with_offset(img, int(x), int(y)).click().perform()
driver.find_element_by_css_selector('.geetest_commit_tip').click()
尾语 💝
要成功,先发疯,下定决心往前冲!
学习是需要长期坚持的,一步一个脚印地走向未来!
未来的你一定会感谢今天学习的你。
—— 心灵鸡汤
本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 😝