Python —爬取教务管理系统,个人成绩
文章图片
打开chrome的按F12进入,选择network,勾上preserve log(为了保存中间过程),输入上图的用户名密码,点击登陆。
文章图片
【Python —爬取教务管理系统,个人成绩】
比如POST方法或者查看login.aspx,这个就是我们提交表单的信息了,点进去拖到最下方可以看到form data,
可以看到提交的用户名密码,接下来只需代码模拟登陆的话把提交这个data里的信息就可以了。
下图的,本人学校的登入的用户名密码的表单。
文章图片
登入进去后,为了爬取成绩需要转到成绩页面,不过不管怎么点击其他页面按键,发现网址始终不变:xxx.xxx.edu.cn/Index.aspx。
这是什么原理,目前还不太懂。不过chrome的network,勾上preserve log(为了保存中间过程),点击成绩查询,又收到2个文件。
文章图片
cjcx:就是“成绩查询”的缩写,Request URL就是真实的地址。
所以真实的成绩查询地址不是:xxx.xxx.edu.cn/Index.aspx,而是:xxx.xxx.edu.cn/cjgl/xs_cjcx.aspx。
接下来,就需要用到cookie登入,然后正则表达式(各个学校不一样),匹配信息,并写入test.txt文件。
正则表达式,自己看了几个网页粗粗的学了下,没有学到家,可以匹配出所有的成绩,但是还是会匹配出一些垃圾信息出来。
文章图片
文章图片
下面就是代码部分:
#encoding=utf-8
import urllib
import urllib2
import cookielib
import re
import stringfile_name1=r'C:\Users\112\Desktop\test.txt'
e = open(file_name1,'w+')#绩点运算
class SDU:
#类的初始化
def __init__(self):
#登录URL
self.loginUrl = 'http://XXX.XXX.edu.cn/login.aspx'
#本学期成绩URL
self.gradeUrl = 'http://XXX.XXX.edu.cn/cjgl/xs_cjcx.aspx'
self.cookies = cookielib.CookieJar()
self.postdata = https://www.it610.com/article/urllib.urlencode({'muser':'151100000',
'passwd':'12345678'
})
self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1)AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11'}
#构建opener
self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookies))
#学分list
self.credit = []
#成绩list
self.grades = [] def getPage(self):
request= urllib2.Request(
url = self.loginUrl,
data = https://www.it610.com/article/self.postdata,
headers = self.headers)
result = self.opener.open(request)
result = self.opener.open(self.gradeUrl)
#打印登录内容
#print result.read()
page = result.read()
print page
#替换内容
page = page.replace('','')
page = page.replace('','')
#正则匹配
st= re.compile(r'.*?(.*?).*?(.*?).*?(.*?)(.*?)(.*?)(.*?)(.*?)')
myItems3 = re.findall(st,page)
print myItems3
for item3 in myItems3:
for i in range(7):
e.write(item3[i]+'')
print item3[i]
e.write('\n \n ')
sdu = SDU()
sdu.getPage()
e.close()
推荐阅读
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 2019-02-13——今天谈梦想()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 低头思故乡——只是因为睡不着
- 取名——兰
- python学习之|python学习之 实现QQ自动发送消息
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议