本项目综述
2026/2/11大约 4 分钟
zhixuewang是一个Python版的智学网API。它支持(包括但不限于):查询分数,查看作业情况,查看阅卷情况等。
支持三种账号类型:
- 学生账号 - 查看考试成绩、作业、同学信息等
- 教师账号 - 查看考试、阅卷进度、下载原卷等
- 家长账号 - 查看孩子的考试成绩和作业(部分功能受限)
提示
如果您在使用的过程中遇到任何问题,或是有任何建议:
加入QQ群进行讨论:862767072(备注:GitHub智学网库);
前往 Issues 进行提问;
如果您想直接贡献代码,欢迎直接 Pull requests。
如果有其它不常见的功能需求, 可以前往 MasterYuan418/zxext 查找或提出。
安装
本项目是基于Python的,所以你需要先安装Python环境。
前置条件
- Python 3.7及以上
- 手
- 有手就行!
命令行安装
打开命令提示符(或bash),输入如下指令:
pip install zhixuewang这将会自动安装本项目,待pip完成后安装便完成。
手动安装
警告
该方法不推荐在可以使用pip安装时使用!你永远要相信自动安装。
以下是命令:
git clone https://github.com/anwenhu/zhixuewang-python
cd zhuxuewang-python
python setup.py install快速开始示例
确保您已经安装 zhixuewang 库,并按照 登录模块 中的说明安装了 Playwright。
学生账号 - 获取成绩
运行如下程序获取考试成绩:
from zhixuewang import login_playwright
# 运行后请在弹出的浏览器中手动完成人机验证
student = login_playwright("学生账号", "密码")
data = student.get_self_mark()
# 解析成绩数据
for subject_score in data:
subjname = subject_score.subject.name # 学科名
score = subject_score.score # 分数
code = subject_score.subject.code # 学科代码
print(f"{subjname} {score} {code}")输出示例:
语文 120 01
数学 135 02
英语 128 03教师账号 - 获取考试列表
运行如下程序获取考试列表:
from zhixuewang import login_playwright
# 运行后请在弹出的浏览器中手动完成人机验证
teacher = login_playwright("教师账号", "密码")
page_exam = teacher.get_exams()
# 打印考试信息
print(f"共有 {page_exam.all_pages} 页,当前第 {page_exam.page_index} 页")
print(f"本页有 {len(page_exam.exams)} 场考试:\n")
for exam in page_exam.exams:
print(f"考试名称: {exam.name}")
print(f"考试ID: {exam.id}")
print(f"年级: {exam.grade_code}")
print(f"是否期末: {exam.is_final}")
print(f"科目: {', '.join([s.name for s in exam.subjects])}")
print("---")输出示例:
共有 3 页,当前第 1 页
本页有 15 场考试:
考试名称: XX中学2026年期末考试
考试ID: 234567
年级: 03
是否期末: True
科目: 语文, 数学, 英语, 物理, 化学, 生物
---
考试名称: XX中学12月月考
考试ID: 234566
年级: 03
是否期末: False
科目: 语文, 数学, 英语
---家长账号 - 获取孩子成绩
运行如下程序获取孩子的考试成绩:
from zhixuewang import login_playwright
# 运行后请在弹出的浏览器中手动完成人机验证
parent = login_playwright("家长账号", "密码")
data = parent.get_self_mark()
# 打印孩子的成绩
print("孩子的考试成绩:\n")
for subject_score in data:
print(f"科目: {subject_score.subject.name}")
print(f"分数: {subject_score.score}")
if subject_score.class_rank:
print(f"班级排名: {subject_score.class_rank}")
print("---")输出示例:
孩子的考试成绩:
科目: 语文
分数: 120
班级排名: 15
---
科目: 数学
分数: 135
班级排名: 8
---更多功能
除了上述基本功能外,本库还支持更多实用功能:
- 私信功能 - 查看和发送私信,支持所有账号类型
- 学生接口 - 完整的学生账号接口文档
- 教师接口 - 完整的教师账号接口文档
- 家长接口 - 家长账号可用接口说明
- 登录方法 - 详细的登录方法和账号类型转换
- 类型定义 - 所有数据类型的完整定义
问题反馈
请截图报错内容,然后在Github Issues内开新issue。
编码规范
如果你想要向我们贡献代码,请遵循如下原则:
- 默认情况下,所有 Python 函数均遵循 PEP 8 原则,使用下划线命名法(snake_case)。
例如:
# 推荐这么做
def get_something_by_sth():
pass- 对于参数,推荐使用指名参数,必须对参数限定类型,同时遵循下划线命名法,不建议出现毫无意义的参数名称。
警告
毫无意义的参数名不仅起不到提示的作用,反而可能会误导其他开发者!
对于同样的参数,例如默认用户名,我们推荐像是 default_user_name 或 default_user
我们不推荐 default,user 或类似 moren_yonghu 之类的参数名.
如:
# 推荐这么做
def get_sth_by_sth(exam_id: str, someone_user_name: str, someone_id: int):
pass
# 不推荐这么做
def get_sth_by_sth(id: str, user: str, id_1: str):
pass
# 错误示范
def get_sth_by_sth(id, user, id1):
pass