1 总体介绍
近日学校上线了家长督学系统。通过该系统,输入学生的证件号,即可查询学生的成绩。密码为证件号的后六位,刚好我有同学们的证件号。准备通过Python读取Excel中保存的证件号,然后模拟登陆,获得成绩信息,然后将所有同学的成绩输出到Excel,以便进行下一步的分析。
2 获取token的思路
通过抓包工具,可以看出在点击登录后,出现了“login”开头的一个请求,并在response中发现了“登陆成功”的字样。
在这个json数据的后面,还找到了一个“token”,我猜测这个token就是用户的标识,标志着登陆成功,可能在后面涉及到用户信息查询的时候会用到这个token。
然后查看请求的信息,使用post方式请求,url就是一个固定的前缀拼接上用户的账号和密码,而我刚好有这些信息。
然后进入查询成绩的页面进行查询,发现果然,token出现在了请求的头文件里,于是爬虫的思路就有了。第一步就是通过登录,获得到用户的token。
那就开始写代码啦,首先通过excel函数,将所需的账户名和密码从excel文件中提取出来。
密码为ID的后几位,截取字符串获得密码的操作在main函数中完成了,此处不予展示。
def excel(i):
global user
global pwd
workBook = xlrd.open_workbook('data/all.xls')
sheet1_content1 = workBook.sheet_by_index(0);
id=sheet1_content1.cell(i, 0).value
print(id)
return id
然后通过拼接字符串的形式,将上一步中获取的账号和密码在Request URL中拼接出来,伪造一个浏览器的请求头,开始进行爬虫。然后将爬虫获取到的对象转换为json格式,发现该数据类型为字典,通过字典的基本语法,提取出了token的值。
def sprider1():
head1 = {
'User-Agent': <