利用python的request库制作一个看网课的程序可以实现自动切换账号点击课程看视频答题的功能网址是oneouchn代码怎么写
由于one.ouchn是需要登录才能访问的网站,所以我们需要先实现登录功能。
以下是制作看网课程序的代码示例:
import requests
from bs4 import BeautifulSoup
import time
# 登录信息
accounts = [
{'username': '账号1', 'password': '密码1'},
{'username': '账号2', 'password': '密码2'},
# 可以添加更多账号
]
# 登录接口
login_url = 'http://one.ouchn.cn/login/index.php'
# 课程列表接口
course_list_url = 'http://one.ouchn.cn/my/'
# 视频观看页面
video_url = 'http://one.ouchn.cn/mod/ouvideo/view.php?id={}'
# 视频答题页面
quiz_url = 'http://one.ouchn.cn/mod/quiz/view.php?id={}'
# 设置请求头信息
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
'Referer': 'http://one.ouchn.cn/login/index.php',
}
# 遍历所有账号进行登录
for account in accounts:
# 创建会话
session = requests.Session()
# 获取登录页面
login_page = session.get(login_url, headers=headers)
soup = BeautifulSoup(login_page.content, 'html.parser')
# 获取登录所需参数
form = soup.find('form', {'id': 'login'})
action = form.get('action')
lt = form.find('input', {'name': 'lt'}).get('value')
execution = form.find('input', {'name': 'execution'}).get('value')
# 构造登录参数
payload = {
'username': account['username'],
'password': account['password'],
'lt': lt,
'execution': execution,
'_eventId': 'submit',
'submit': '登录',
}
# 发送登录请求
response = session.post(action, data=payload, headers=headers)
if '我的课程' in response.text:
print(f'{account["username"]} 登录成功!')
else:
print(f'{account["username"]} 登录失败!')
continue
# 获取课程列表
course_list_page = session.get(course_list_url, headers=headers)
soup = BeautifulSoup(course_list_page.content, 'html.parser')
# 获取课程列表中的课程链接
course_links = soup.find_all('a', {'class': 'coursename'})
for link in course_links:
# 获取课程id
course_id = link.get('href').split('=')[1]
# 访问视频页面
video_page = session.get(video_url.format(course_id), headers=headers)
soup = BeautifulSoup(video_page.content, 'html.parser')
# 获取视频id
video_id = soup.find('input', {'name': 'id'}).get('value')
# 获取视频标题
video_title = soup.find('div', {'class': 'page-header-headings'}).find('h1').text.strip()
# 输出视频信息
print(f'正在观看 {video_title}...')
# 访问视频答题页面
quiz_page = session.get(quiz_url.format(course_id), headers=headers)
soup = BeautifulSoup(quiz_page.content, 'html.parser')
# 获取题目信息
questions = soup.find_all('div', {'class': 'qtext'})
# 遍历答题
for question in questions:
# 获取题目
question_title = question.text.strip()
print(f'正在回答问题:{question_title}')
# 获取选项
choices = question.parent.find_all('label', {'class': 'form-check-label'})
# 随机选择一个选项
choice = choices.pop()
payload = {
'qid': choice.find('input').get('name').split('_')[1],
choice.find('input').get('name'): choice.find('input').get('value'),
'submitbutton': '提交答案',
}
# 提交答案
session.post(quiz_url.format(course_id), data=payload, headers=headers)
# 等待一段时间
time.sleep(3)
这个代码示例使用了requests库和BeautifulSoup库来实现自动化操作,先遍历所有账号进行登录,然后获取课程列表,访问每个课程的视频观看页面,获取视频id和视频标题,输出视频信息,然后访问视频答题页面,获取题目信息,随机选择一个选项提交答案。最后等待一段时间,然后进入下一个题目
原文地址: https://www.cveoy.top/t/topic/fsjb 著作权归作者所有。请勿转载和采集!