ZUCC 正方教务系统 抢课脚本 抢课流程实现

ZUCC 正方教务系统 抢课脚本 抢课流程实现

新版ZUCC正方教务系统抢课脚本的流程分析与实现,文章结尾有完整项目的所有代码。
个人博客文章链接

流程分析

  1. 账号登录进入首页
  2. 模拟请求进入计划内选课界面
  3. 模拟点击进入某个课程,爬取课程时间分布信息
  4. 模拟发送抢课数据包

初始化CATCH_PLANNED_COURSE.py这个文件

import LOGIN
from bs4 import BeautifulSoup
import time

class PlannedCourse:
    def __init__(self, account):
        self.account = account
    def enter_planned_course(self):
        return
    def catch_course(self):
        return
    def choose_course_class(self):
        return
    def run(self):
        # 进入计划内选课界面
        self.enter_planned_course()
        # 爬取课程信息
        self.choose_course_class()
        # 模拟发包抢课
        self.catch_course()

这里的account对应了登录时的账号,登录时的会话一直保存在account中,在选课的部分会通过这个会话保持和正方教务系统的连接。

进入计划内选课界面

首先我们需要知道在正常网页下我们是如何进入计划内选课界面的。

一般情况下我们会点击计划内选课进入,但是这样我们是无法获取到真正的界面的。当我们ctrl+点击计划内选课的时候会新建一个标签页,在这个页面中才是计划内选课的真正网址

在这里插入图片描述

下图是直接点击进入的网站

在这里插入图片描述

下图是ctrl+点击进入的网站

在这里插入图片描述

所以我们登录成功后可以直接像这个网站发送GET请求,account对象的会话内容就会转移到这个页面。

这里可以通过BeautifulSoup解析一下,确保能出现课程种类就好。

def enter_planned_course(self):
    url = LOGIN.ZUCC.PlanCourageURL + "?xh=" + self.account.account_data["username"]
    header = LOGIN.ZUCC.InitHeader
    header["Referer"] = url
    response = self.account.session.get(url=url, headers=header)
    """以下两行代码可以用先解析以下,看下当前是否在我们需要的页面"""
    self.account.soup = BeautifulSoup(response.text, "lxml")
    #print(self.account.soup)
    #return response

能输出以下内容就证明进入了计划内选课界面

在这里插入图片描述

课程选择

enter_planned_course.py会返回一个包含课程信息的response,这个response会以参数的形式出现在choose_course_class.py中,所以对应的地方都要更改

def choose_course_class(self,response):
    return

def run(self):
    # 进入计划内选课界面
    response = self.enter_planned_course()
    # 爬取课程信息
    self.choose_course_class(response)
    # 模拟发包抢课
    self.catch_course()

首先我们需要选择我们要抢什么课,那我们就需要从刚才的网页中把所有的课程信息给获取出来。这个时候就要用到爬虫来帮我们获取这些网页标签。

分析之前得到的response中的网页,可以得到每个课程种类信息是以下面这种结构在html文件中呈现出来的。(下面html样例中的超链接部分我删除了)

<tr>
    <td>301258</td>
    <td>操作系统原理</
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值