USTC统一认证平台的爬虫接口,有效性验证于2021.11。
抓取数据就像请求普通网站一样,自动进行登录验证,帮助开发者 Focus on 这个网页本身,而不需要考虑验证等繁杂步骤。
使用requests库构建,可以支持requests库的get/post所有参数。
在本项目的支持下,提供了一些简单的应用实例:
example_select_lecture.py
:学术讲座选课(5行代码)。example_get_score.py
:抓取成绩表(3行代码)。example_ecard.py
:抓取一卡通信息(3行代码)。example_tickets.py
:查看东区大礼堂上映电影的情况。
仅供学习交流使用,开发者对使用或不使用本脚本造成的问题不负任何责任。
- Python 3 环境
pip install requests
auth = USTC_Auth(user_id, user_pwd, latency = False)
- 填写学号、密码
latency
提供延迟认证功能- False: 默认,直接建立session
- True: 延迟建立session,实例化时未与服务器建立session,然后通过auth()函数建立
只有实例化时选择latency = True
时,需要手动执行auth()
函数建立session;否则不需要
auth = USTC_Auth(user_id, user_pwd, latency = True)
auth.auth()
与requests库的get/post方法一致。
r = auth.get('xxx.xxx.xxx', headers=headers, ...)
r = auth.post('xxx.xxx.xxx', headers=headers, data=data, ...)
还提供了一种便捷的get/post方法,提供一个默认的请求头。
r = auth.get_with_headers(url, ...)
r = auth.post_with_headers(url, data, ...)
取出session,可以做进一步的扩展:
my_session = auth.get_session()
from ustc_auth import USTC_Auth
# 直接实例化,已经与服务器建立session(默认)
auth = USTC_Auth('SA21******', '*********') # 填写学号、密码
# get和post方法和requests库里的使用方法相同
# 参数:requests库里的参数均可使用
r = auth.get('xxx.xxx.xxx', headers=headers, ...)
r = auth.post('xxx.xxx.xxx', headers=headers, data=data, ...)
r = auth.get_with_headers(url) # 提供了一个默认的header
r = auth.post_with_headers(url) # 提供了一个默认的header
my_session = auth.get_session() # 取出session,可以做进一步的扩展
# 也可以延迟建立session,实例化时未与服务器建立session,然后通过auth()函数建立
auth = USTC_Auth('SA21******', '*********', latency = True) # 填写学号、密码
auth.auth() # 与服务器建立session
下面以example_get_score.py
抓取成绩表为例:
from ustc_auth import USTC_Auth
# 实例化,生成一个对象,此时已与认证服务器建立session
auth = USTC_Auth('SA21******', '***********') # 填写学号、密码
# 查询成绩的接口,可以在浏览器中F12抓包获取
url = 'http://yjs.ustc.edu.cn/score/m_score.asp'
# 就像访问普通网页一样直接get
r = auth.get_with_headers(url)
print(r.text) # 打印各项成绩,未格式化,可以自己格式化文本
方便的话给个Star呗~