发布于 

python网页自动化-案例一:刷网课

项目案例代码

# from DrissionPage import ChromiumOptions, SessionOptions, WebPage
# import time
#
# do = ChromiumOptions(ini_path=r'/Users/weijiajin/PycharmProjects/DBRD/dp_configs.ini')
# so = SessionOptions(ini_path=r'/Users/weijiajin/PycharmProjects/DBRD/dp_configs.ini')
#
# page = WebPage(driver_or_options=do, session_or_options=so)
#
# import time
# # shuake_url = ''
# import re
# # 创建页面对象,初始d模式
# page = WebPage('d')
# # 跳转到登录页面
# page.get('https://xzjnrc.px.chaoxing.com/portal/login')
# page.wait.load_start() # 等待页面进入加载状态
# page.ele('t:a@tx():手机号登录').click()
# page.wait.load_start() # 等待页面进入加载状态
# # 定位到账号文本框并输入账号
# page.ele('#phoneName').input('输入账号')
# # 定位到密码文本框并输入密码
# page.ele('#phonepassword').input('输入密码')
# page.ele('t:button@tx():登录').click()
# page.wait.load_start() # 等待页面进入加载状态
# page.ele('#first134672').click()
# page.wait.load_start() # 等待页面进入加载状态
# page.ele('t:a@tx():进入学习').click()
# page.wait.load_start() # 等待页面进入加载状态
# page.get('https://xzjnrc.px.chaoxing.com/studentspace/projectPlan/projectPlanListUI?classId=65221fa9794bf8240c8cd89d')
# page.wait.load_start() # 等待页面进入加载状态
# print(1)
# page.get('https://mooc1.chaoxing.com/mycourse/studentstudy?chapterId=789792971&courseId=237594013&clazzid=84086408&cpi=369793499&enc=f29f00f0ecc18e7261badc2e85f1f689&mooc2=1&openc=b7f7236558e3db98fc9724df2695e21d')
# page.wait.load_start() # 等待页面进入加载状态
# print(2)
# page.ele('t:span@tx():播放视频').click()
# page.wait.load_start() # 等待页面进入加载状态
# print(3)
# minutes, seconds = page.ele('.vjs-duration-display').text.split(':')
# total_seconds = int(minutes) * 60 + int(seconds) + 10
# print(total_seconds)
# time.sleep(total_seconds) # 添加延迟
# print(4)

from DrissionPage import ChromiumOptions, SessionOptions, WebPage
import time
import datetime
import subprocess

do = ChromiumOptions(ini_path=r'/Users/weijiajin/PycharmProjects/DBRD/dp_configs.ini')
so = SessionOptions(ini_path=r'/Users/weijiajin/PycharmProjects/DBRD/dp_configs.ini')


def execute_webpage(url, i):

page = WebPage(driver_or_options=do, session_or_options=so)

# 使用AppleScript执行Command + M键盘快捷键
applescript = '''
tell application "System Events" to keystroke "m" using command down
'''
subprocess.call(['osascript', '-e', applescript])


page.get('https://xzjnrc.px.chaoxing.com/portal/login')
page.wait.load_start() # 等待页面进入加载状态
time.sleep(1)
page.ele('t:a@tx():手机号登录').click()
page.wait.load_start() # 等待页面进入加载状态
time.sleep(1)

page.ele('#phoneName').input('输入手机号') # 输入手机号
page.ele('#phonepassword').input('输入密码') # 输入密码
page.ele('t:button@tx():登录').click()
page.wait.load_start() # 等待页面进入加载状态
time.sleep(1)

page.ele('#first134672').click()
page.wait.load_start() # 等待页面进入加载状态
time.sleep(1)

page.ele('t:a@tx():进入学习').click()
page.wait.load_start() # 等待页面进入加载状态
time.sleep(1)

page.get('https://xzjnrc.px.chaoxing.com/studentspace/projectPlan/projectPlanListUI?classId=65221fa9794bf8240c8cd89d')
page.wait.load_start() # 等待页面进入加载状态
time.sleep(1)

# 循环执行
# 开始时间
#start_time = time.time()
page.get(url)
page.wait.load_start() # 等待页面进入加载状态
time.sleep(5)
page.ele('.vjs-big-play-button').click()
page.wait.load_start() # 等待页面进入加载状态
time.sleep(5)
print()
print(str(datetime.datetime.now())+': 开始播放第'+str(i)+'视频')

print('播放时长:'+page.ele('.vjs-duration-display').text)

hours = "0"
minutes = "0"
seconds = "0"
if len(page.ele('.vjs-duration-display').text.split(":")) == 3:
hours, minutes, seconds = page.ele('.vjs-duration-display').text.split(':')
else:
minutes, seconds = page.ele('.vjs-duration-display').text.split(':')

total_seconds = (int(hours) * 3600 + int(minutes) * 60 + int(seconds) + 10)/2
print("开启二倍速,剩余时间为:", total_seconds)
page.ele('t:span@tx():2x').click()
time.sleep(400) # 添加延迟
# 判断是否到达总时间
# if time.time() - start_time >= total_seconds:
# break
print(str(datetime.datetime.now())+': 第' + str(i) + '视频播放结束')
page.quit()
return page


with open('urls.txt', 'r') as file:
urls = file.readlines()

i = 1
for url in urls:
execute_webpage(url.strip(), i)
time.sleep(5)
i = i + 1