最近英语四级成绩出了,自己虽然分数不高但也是过了,虽然自己过了,但是自己比较好奇班里同学们的通过情况。为了满足自己的好奇心,自己利用毛概课写了python自动查询脚本
- 首先分析网页,查询界面肯定是ajax,所以直接抓ajax的包,进行分析
- 发现是get请求,响应数据是json数据
- 开始请求,因为要爬取班级所有同学的,所以从excel中读取每个同学的信息,然后进行解析,解析出成绩
对成绩进行保存,将成绩保存在excel中,这样看起来更直观,以下是源码:
import requests import json import xlrd import xlwt xm = '' no = '' def write_excel_xls_append(path): workbook = xlwt.Workbook() # 新建一个工作簿 sheet = workbook.add_sheet(path) # 在工作簿中新建一个表格 index = len(ls) for i in range(0, index): for j in range(0, 2): sheet.write(i, j, ls[i][j]) # 像表格中写入数据(对应的行和列) workbook.save(path) # 保存工作簿 print(ls) header = { 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Connection': 'keep-alive', 'Host': 'cachecloud.neea.cn', 'Origin': 'http://cet.neea.cn', 'Referer': 'http://cet.neea.cn/', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36' } inform_path = '' workbook = xlrd.open_workbook(inform_path) # 打开工作簿 sheets = workbook.sheet_names() # 获取工作簿中的所有表格 worksheet = workbook.sheet_by_name(sheets[0]) # 获取工作簿中所有表格中的的第一个表格 _str = '' ls = [] # 读取工作簿的信息并发送请求 for i in range(0, worksheet.nrows): # print(worksheet.row(i)) xm = str(worksheet.cell_value(i, 0)) no = str(worksheet.cell_value(i, 1)) # print(xm) url = "http://cachecloud.neea.cn/api/latest/results/cet?e=CET_202112_DANGCI&km=1" + "&xm={}&no={}&v=".format(xm, no) data = requests.get(url=url, headers=header).json() try: if int(data['score']) >= 425: st = '通过' else: st = '未通过' ls.append([data['xm'], data['score'], st]) except: # _str = _str + xm + ' ' + '无成绩' + '\n' ls.append([xm, '无成绩', '无成绩']) path = '' # 持久化存储 write_excel_xls_append(path) # print(ls)
- 写在最后:通过抓包分析,还可以实现自动成绩单打印以及其他功能,只不过自己对那不是很好奇了,就没有再写
1 条评论
牛马,偷看全班成绩