from DrissionPage import ChromiumPage,ChromiumOptions from DrissionPage.common import * from collections import * import time import json from loguru import logger import subprocess from typing import * # http://hnqmgc.17el.cn/grzx/ # 单独实现登录操作 def get_into_center(cpage:ChromiumPage): cpage.ele('#login_btn').click() cpage.ele('@value=进入个人中心').click() def login(first:bool=True,init:bool=False): if not first: return # 先检查当前页面是否已经登录 page = ChromiumPage() try: if page.ele('tag:div@@text():欢迎您,',timeout=3): logger.info('当前页面已登录') return except BaseException: logger.info('准备登录') if first: try: page.get('http://hnqmgc.17el.cn/grzx/',retry=5,timeout=5,interval=1) except BaseException: logger.error('网络连接失败') # 定位到账号文本框,获取文本框元素 ele = page.ele('#userName') # #的意思是通过id定位元素 # 输入对文本框输入账号 ele.input('51140220050507901X') # 定位到密码文本框并输入密码 page.ele('#password').input('hnqm123456') # 定位到验证码文本框并输入验证码 inpcode = page.ele('#yzcode').text # 湖南青马太可爱了吧,验证码居然直接放在页面源码里:) page.ele('#inpcode').input(inpcode) # 点击登录按钮 page.ele('#btnLogin').click() page.wait.new_tab(3) # 进入课程页面 try: if page.ele('@onclick=cha()',timeout=3): page.ele('@onclick=cha()').click() # elif page.ele('tag:img@@style=width: 25px;height: 25px;',timeout=3): page.ele('tag:img@@style=width: 25px;height: 25px;').click() except BaseException: logger.error('不能进入课程页面') subprocess.run(["python", __file__]) exit() if not init: get_into_center(page) def get_info(first:bool=True): # 创建页面对象,并启动或接管浏览器 page = ChromiumPage() # 登录 login(first) # 提取课程信息 time.sleep(2) if not first: page.refresh() time.sleep(2) page.ele('@value=0',timeout=3).click() # 获取总页数 course_info = {} #