目标实现:通过网络爬虫爬取教务网的成绩;能够自动评教(全部好评,无评语);通过提前存入的课程代码,选取课程;
已实现目标:通过网络爬虫爬取教务网的成绩;
目标分析:
第一:实现模拟登录。
第二:跳转到指定网页并进行网页解析。
第三:打印输出。
通过页面的分析,需要做到以下事情:
第一:接收Cookie并维持对话
第二:识别验证码
第三:构建请求头和需要提交的表单
第四:请求指定网页
第五:进行网页解析找出需要的成绩信息
第六:格式化输出
代码展示:
第一步:访问教务网登录页面,用resquets的session方法维持会话(会帮我们获取和管理Cookie);用BeautifulSoup解析得到两个验证参数。
第二步:同样利用resquests的session方法获取验证码,教务网的验证码为一个url链接(维持会话帮助我们获取的验证码为我们刚刚访问页面展示的,即和得到的验证参数相匹配);由于验证码比较简单,我采用的是利用tesserocr进行自动识别验证码。
第三步:从外部获得学号,密码等信息,利用第一步得到参数,同样利用requests的session方法提交post请求,实现模拟登录。
第四步:利用requests的session的方法get到成绩查询页面,并传入网页分析函数,接着传入格式化输出函数;
第五步:利用BeautifulSoup对网页进行解析,并利用print函数,进行格式化输出。
在这次目标的达成中,遇到了各种各样的错误,从第三方库安装和调用问题到网页请求失败。在经过不懈的努力,终于勉强能够达成第一个目标了,可能在上述代码中还存在不合理的地方,希望大家能够留言指出,谢谢!!!(虽然可能没有人看)我会持续对这个代码的功能进行完善。终极目标是能够根据教务系统的学业对比和评教实现全自动选课!
领取专属 10元无门槛券
私享最新 技术干货