使用python爬取UESTC的信息门户

来源:互联网 发布:jdk1.7 linux 32下载 编辑:程序博客网 时间:2024/04/30 17:33

这个示例主要是展示如何使用Python登录,之后做什么,可以自行发挥想象力

准备工作

需要安装requests和pyquery

sudo pip install requests pyquery

导入所需要的包

import requestsfrom pprint import pprint as prfrom pyquery import PyQuery as pq

登录数据

username = "" # 这里填入用户名和密码password = ""

创建一个session

一个session可以自动持有cookie状态

session = requests.session()
# 主要是先获取一下Cookier = session.get("http://idas.uestc.edu.cn/authserver/login?service=http%3A%2F%2Fportal.uestc.edu.cn%2F")

通过PyQuery获取表单数据

有两个字段 lt,execution 需要从网页中获取

PyQuery允许python使用css选择器获取数据,而css选择器可以通过浏览器的开发人员工具轻易获得

d = pq(r.text);# 从网页中获取动态生成的字段lt = d('#casLoginForm > input[type="hidden"]:nth-child(5)').attr.valueexecution = d('#casLoginForm > input[type="hidden"]:nth-child(7)').attr.valuedata = {    "username":username,    "password":password,    "lt":lt,    "execution":execution,    "rmShown":1,    "dllt":"userNamePasswordLogin",    "_eventId":"submit" }

发起登录请求

r = session.post("http://idas.uestc.edu.cn/authserver/login?service=http://portal.uestc.edu.cn/index.portal",data=data)

校验登录结果

pr(session.cookies.get_dict())
{'CASTGC': 'TGT-760597-4Nzt2VckndWuu95jo36sGzdgrJaGsUdCmrkqXyKL7Oafjw2cbi1469692933750-atK3-cas', 'JSESSIONID': '00001cK6Y7jw_-BKbQurTgafkNz:19sdu3far', 'JSESSIONID_ids1': '0001R0uDUX4St3bctO6tzQxJ7Ly:CJEN9N8GG', 'MOD_AUTH_CAS': 'MOD_AUTH_ST-2238615-dtZU2RVaCfimEHKedCN61469692933851-H1xa-cas', 'iPlanetDirectoryPro': 'AQIC5wM2LY4SfcxjkJB4CLIYsgVtSJqVPPQKUCGv1v5CvGo%3D%40AAJTSQACMDE%3D%23', 'route': 'a1450b02a3bfbf6f5e1b74667a4bce88'}

获取有全部成绩记录的页面

r = session.get("http://eams.uestc.edu.cn/eams/teach/grade/course/person!historyCourseGrade.action?projectType=MAJOR");

解析成绩数据

table = []d = pq(r.text)
h = d(".gridtable:last thead tr th")c = d(".gridtable:last tbody tr")for tr in c:    line = {}    for td,i in zip(tr.getchildren(),h):        line[i.text]=td.text.strip()    table.append(line)

显示数据

for line in table:    print "%s \t%.10s" % (line[u"课程名称"],line[u"最终"])
高级英语读写  74综合应用设计 I    90信息工程导论  87数据结构与算法     81嵌入式系统导论     83计算机组成原理与结构  63大学体育II  81信息检索与利用     83英国文学与文化     66应用数学基础  86MATLAB使用详解  90大学体育I   71软件工程基础  78概率论与数理统计    60政治经济学原理与实践  45哲学通论    78C语言程序设计     93线性代数与空间解析几何I    78数据库原理及应用    85大型机操作系统     80新生教育    89学术英语读写  83计算机网络基础     75美术鉴赏    91军事训练    80微积分I    73微积分II   68网球D     85操作系统基础  76形势与政策   87中国近现代史纲要    88空天信息技术概论    90通用英语    72军事理论    88思想道德修养与法律基础     85数字逻辑设计  76UNIX操作系统基础  89面向对象程序设计(java)  95大学物理Ⅰ   60综合C     68COBOL程序设计   81IT工程师职业基础   77
0 0