前言
大家早好、午好、晚好吖 ❤ ~欢迎光临本文章
在一个平平常常的下午,一位好友向我发送了聊天申请
问:能帮她自动过一下科目四嘛,实在不想刷题了
那小姐姐的忙我能不帮嘛!!于是,我立马行动,帮她写出来这个代码
想着我也没啥用,毕竟老司机了~就作为福利来发给大家吧
祝看到这篇文章的人考驾照通通一把过呀~
目录
- 前言
- **更多精彩内容、资源皆可点击文章下方名片获取[此处跳转](#article_bottom)**
- 环境使用:
- 模块使用:
- 本次网站
- 代码展示
- 尾语 💝
更多精彩内容、资源皆可点击文章下方名片获取此处跳转
环境使用:
-
Python 3.8
–> 解释器 <执行python代码>
-
Pycharm
–> 编辑器 <写python代码的>
模块使用:
-
import requests
—> 数据请求模块 pip install requests
-
import re
—>正则模块
-
from selenium import webdriver
—> 自动测试模块 pip install selenium==3.141.0 <指定版本安装>
默认安装 selenium 安装 4.0 和 3.0 语法上面有区别, 但是方法一样
本文所有模块\环境\源码\教程皆可点击此处跳转免费领
本次网站
代码展示
导入模块
import requests
import re
from selenium import webdriver
1. 打开浏览器
配置浏览器驱动:
大版本一样, 小版本最相近即可
driver = webdriver.Chrome(r'D:\download\anaconda\chromedriver.exe')
2. 访问网站
driver.get('https://www.*****.com/kms-sxlx')
设置全屏
driver.maximize_window()
读取答案文本内容, 获取答案ID <读取数据>
f = open('答案ID.txt', encoding='utf-8')
字符串分割方法: split() –> 字符串数据变成列表
answer_id_list = f.read().split(',')
for循环遍历, 把列表里面元素一个一个提取出来
for answer_id in answer_id_list:
3. 发送请求, 模拟浏览器对于url地址发送请求
请求地址: 答案页面url
<Response [200]>
表示响应对象
Response:
中文意思响应/回复/回答
<>:
表示对象
200:
状态码 表示请求成功 –> 相当于你打电话, 打通了有嘟嘟嘟声音
404:
链接不对 –> 相当于你打电话, 你所拨打的电话是空号
构建答案页面url –> f’{}’ 字符串格式化方法 –> format
answer_url = f'https://****.com/Post/{answer_id}.htm'
伪装模拟
headers = {
# User-Agent 表示浏览器基本身份标识
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
发送请求
response = requests.get(url=answer_url, headers=headers)
4. 获取数据, 获取页面网页源代码
5. 解析数据, 提取我们想要答案内容
re.findall
(‘匹配的数据’, ‘什么地方匹配’)
–> re模块里面findall方法: 找到所有我们想要的数据内容
(.*?)
–> ()精确匹配 .匹配任意字符(除了\n换行符) *匹配前一个字符0或者N个 ? 非贪婪匹配模式
网站不同, 数据结构不同 –> 基本上一个代码对一个网站
answer = re.findall('答案是:(.*?)。', response.text)[0]
print(answer)
源码、解答、教程加Q君羊:702813599 ###
if answer == '对':
answer = 'Y'
elif answer == '错':
answer = 'N'
选择正确答案进行点击操作:
先定位元素, 然后再进行操作
find_element_by_css_selector
–> 通过css选择器查找元素
len()
统计元素个数
answer –> A 元素只有一个 <单选题>
answer –> ABD 元素三个 <多选题>
if len(answer) == 1:
driver.find_element_by_css_selector(f'#btn{answer}').click()
点击下一题
driver.find_element_by_css_selector('#btn_PN span').click()
elif len(answer) > 1:
# len(answer) --> 3 num -> 0 / 1 / 2
for num in range(len(answer)):
driver.find_element_by_css_selector(f'#btn{answer[num]}').click()
点击确定选好了的按钮
driver.find_element_by_css_selector('#ExamOptDa input').click()
点击下一题
driver.find_element_by_css_selector('#btn_PN span').click()
尾语 💝
好了,今天的分享就差不多到这里了!
完整代码、更多资源、疑惑解答直接点击下方名片自取即可。
对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง
喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!
最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇👇
文章出处登录后可见!