CSUFT教务处爬虫项目 后端处理

本文介绍了一种针对教务系统的爬虫项目后端处理方法,包括登录态维护、数据高效处理及成绩分析等核心功能。通过减少爬虫请求次数、复用数据等方式提升性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CSUFT教务处爬虫项目 后端处理


前言

之前说到爬到数据如何处理登录态,总不能每次想获取数据都模拟登陆一次再获取数据分析,那我们的客户端等待我们的服务端响应时间就太久了

解决思路

由于我们模拟的客户端请求教务处都会存在一个唯一session或者说cookie,那么我们可以记录这个状态,在你的服务端和你的客户端的cookie和session中,那么每次请求我们就可以识别到是哪个用户。

在项目如何高效地处理数据是爬虫项目的重点,因为不同接口你可能会复用一些数据或者方法,我们不可能不同的接口都去爬取一次,然后利用不同的数据分析方法来进行统计筛选,整个项目我们要遵守爬虫请求次数尽可能的少,爬取数据尽可能的全的原则。做到复用性强,高性能。

以成绩为例,想要拿到成绩列表以及成绩统计(GPA\APF) 数据,我们就需要先获取成绩列表(封装成方法),再利用返回列表的方法逐个分析数据并统计,最后构建一个响应集合体,这样我们返回的数据就是通过一次数据请求完成的。

//Grade实体类
@Data
public class Grade {

    /**
     * 序号
     */

    private Integer id;

    /**
     * 开课学期
     */
    private String term;

    /**
     * 课程名称
     */
    private String courseName;


    /**
     *  课程成绩
     */

    private String grade;

    /**
     *  课程学分
     */

    private Double credit;

    /**
     * 单科绩点
     */

    private  Double gradePoint;

    /**
     * 课程属性 公选  必修
     */
    private String attribute;

    /**
     * 正常 0 补考 1 考试方式
     */


    private Integer status;

}

//Grade分析实体类
@Data
public class GradeAnalysisInfo {


    /**
     *学号
     */
    private String sid ;
    /**
     * 按学期来 的分析列表
     */
    private List<GradeAnalysis> termList ;
    /**
     * 按学期来 的分析列表
     */
    private List<GradeAnalysis> yearList ;
    /**
     * 按年份来的 分析列表
     */

    /**
     * 已获学分
     */
    private Double allCredit;

    /**
     * 所有gpa
     */
    private Double allGpa;
    /**
     * 所有Apf
     */
    private Double allApf;



}

其它业务实体类也是一样的

同时在业务层面一定要注意使用全局错误响应拦截器(最好自己定义错误异常类,便于自行抛出),这利用了Spring AOC的特性,能够有效防止服务端错误信息泄露给前端,这一技术是从yupi那学到的,感觉非常有帮助。

最后

正如之前所说,项目的整体逻辑还是很简单的,注意细节的处理,开发起来很容易上手。但要想追求极致的视觉体验,还得好好应用前端技术,整个项目我使用Ant Design Pro构建,前端源码可在 CsuftSpiderFront 查看。

后端源码和实现展示可在CsuftSpiderBackend查看。

爬虫思路博客可查看 这篇文章 Java爬虫思路

服务器连接内网可以 查看这篇文章 Docker运行Easyconnect

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值