湖北工业大学教务处
啥都不说,直入正题。
思路:分析请求地址——解决登陆问题——获取页面后筛选有用信息——优化相关算法
一、分析请求地址
通过分析教务处官网,发现请求URL为http://run.hbut.edu.cn/StuGrade/Index
并且得到了登陆时所需要post的表单数据。
二、登陆
通过requests模拟请求,其中验证码部分需要定向到生成验证码的url,发现url对应的是一个图片文件,因此我选择直接利用open在本地新建一个图片文件,利用write写入,人工输入验证码。
其中部分代码如下:
captcha = requests.get('http://run.hbut.edu.cn/Account/GetvalidateCode', headers=headers) result = captcha.content fn = open('F:\hugongda.jpg','wb') fn.write(result) fn.close() def login(): data = { 'isRemember': '1', 'Password': 'XXXXXXXX', 'Role': 'Student', 'UserName': '1510821209', 'ValidateCode': input('请输入验证码:') } response = requests.post('http://run.hbut.edu.cn/Account/LogOn', data=data, headers=headers)
三、筛选有用信息
在对response对象进行分析之后,发现页面源代码很难使用正则表达式(其实是自身能力不足的缘故...)筛选出所需字符串,因此这里我们采用了BeautifulSoup模块:
grade = requests.get('http://run.hbut.edu.cn/StuGrade/Index',headers=headersgrade) soup = BeautifulSoup(grade.text,"html.parser") print(soup.h2.string) for i in soup.find_all("td"): print(i.get_text().replace(' ','').replace('不允许报名','').replace('已公布','').replace('已评教','').replace('\n',''))
强行使用replace,毕竟新手不知道怎么做,但是目的达到了。
四、优化算法
对data{}中的类似于Student和Password进行了处理,使每个学生都可以输入自己的学号和密码进行登陆。
但是还有一个问题,每个人在登陆的时候都必须自己在相应文件夹创建对应的用来存放验证码的hugongda.jpg文件,很麻烦,不知道怎么解决。
晒一下运行结果:
有待完善。
相关阅读
《数据结构》课程设计报告 题目: 学生成绩管理系统 班级: 计算机科学与技术 学号: 182
老师要求:能查询每个学生的总成绩、显示前三名成绩、单科成绩最高分和不及格的学生名单、全班平均成绩、各科成绩在不同分数段的学
一、HTTP协议 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。 用于从WWW服务器传输超文本到本地浏览器的传送协议。
好吧,英语四六级分数的算法一直是个迷,瓜子、板凳准备好,今天我就来揭秘!四六级考试最后得出的分数,并不完全是你做对了多
在大量的数据面前,假如靠手工进行成绩合格不合格的判断工作量会非常的大,下面小编教你excel怎么用if函数判断成绩是否及格。希望对