紧跟时事,自己制作四六级查分小工具
本帖最后由 prince_cool 于 2021-8-28 17:24 编辑最近在假期重拾了python,学习了爬虫和图形化界面库tkinter,想着最近也要四六级查分了,就看看能不能自己写一个这样的小工具吧。
首先、打开查分网页
按F12,打开开发者工具,填入信息获取响应
(发现并没有什么cookie,token验证,发现是普通地提交参数获得请求)
(km:查询的科目,e:不用修改,xm:姓名,no:身份证号或准考证号,v不填)
查看一下响应
(因为是错误信息,当然返回的响应是错误的提示)
接下来输入我自己的正确信息(已做处理)
获得相应的正确内容
(裸考没想到过了,哈哈哈哈哈哈)
数据都有了,我们开始编写程序吧!
用到了request,tkinter和json库
下面是做好后的界面,毕竟第一次做这种,排版什么的都不太好,多多见谅
因为分析写代码什么的都比较简单,我就直接把代码放在下面了,可以直接打包或者修改代码,做的更好看,有不懂的地方可以留言交流,感谢
import tkinter.messagebox
import requests
import json
from tkinter import *
from tkinter import ttk
def get_data():
try:
kmlist={
'全国大学英语四级考试(CET4)':'1',
'全国大学英语六级考试(CET6)':'2',
'全国大学日语四级考试(CJT4)':'3',
'全国大学日语六级考试(CJT6)':'4',
'全国大学德语四级考试(PHS4)':'5',
'全国大学德语六级考试(PHS6)':'6',
'全国大学俄语四级考试(CRT4)':'7',
'全国大学俄语六级考试(CRT6)':'8',
'全国大学法语四级考试(TFU4)':'9'
}
url='http://cachecloud.neea.cn/api/latest/results/cet'
headers={
'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/92.0.4515.159 Safari/537.36'
}
km=com.get()
name=entry1.get()
id=entry2.get()
params={
'e': 'CET_202106_DANGCI',
'km': kmlist,
'xm': name,
'no': id
}
response=requests.get(url,headers=headers,params=params)
data=json.loads(response.content.decode())
if data['code']!=404:
datalist={
'姓名':data['xm'],
'准考证号':data['zkzh'],
'总分':data['score'],
'听力':data['sco_lc'],
'阅读':data['sco_rd'],
'写作和翻译':data['sco_wt']
}
for i in datalist:
text.insert(END,'{}:{}'.format(i , datalist))
text.see(END)
text.update()
if int(data['score'])>=425:
tkinter.messagebox.showinfo(message='恭喜你,通过考试啦,么么哒!!!👍')
if int(data['score'])<425:
tkinter.messagebox.showinfo(message='很遗憾,你没通过考试哦,继续加油!!!🦾')
else:
text.insert(END,data['msg'])
except:
tkinter.messagebox.showerror(message='请登录后再点击,谢谢')
window=Tk()
window.title('四六级成绩查询')
screenwidth = window.winfo_screenwidth()# 屏幕宽度
screenheight = window.winfo_screenheight()# 屏幕高度
width = 1000
height = 500
x = int((screenwidth - width) / 2)
y = int((screenheight - height) / 2)
window.geometry('{}x{}+{}+{}'.format(width, height, x, y))# 大小以及位置
#查询科目下拉菜单
com=ttk.Combobox(window,width=30)
com.pack()
com['value']=('全国大学英语四级考试(CET4)','全国大学英语六级考试(CET6)','全国大学日语四级考试(CJT4)','全国大学日语六级考试(CJT6)','全国大学德语四级考试(PHS4)','全国大学德语六级考试(PHS6)','全国大学俄语四级考试(CRT4)','全国大学俄语六级考试(CRT6)','全国大学法语四级考试(TFU4)')
com.current(0)
#输入框
frm1=Frame(window,height=150,width=100)
l1=Label(frm1,text='姓名:',font=('宋体',20))
l1.grid()
l2=Label(frm1,text='身份证或准考证号:',font=('宋体',20))
l2.grid(row=1) #网格布局
entry1=Entry(frm1,font=('宋体',20))
entry1.grid(row=0,column=1)
entry2=Entry(frm1,font=('宋体',20))
entry2.grid(row=1,column=1)
frm1.pack()
#结果框
frm2=Frame(window,height=350,width=800)
sc=Scrollbar(frm2)
sc.pack(side=RIGHT,fill=Y)
text=Listbox(frm2,font=('宋体',20),width=50,yscrollcommand=sc.set)
text.pack(side=LEFT,fill=BOTH,expand=False)
sc.config(command=text.yview)
frm2.pack()
#查询按钮
frm3=Frame(window,height=50,bg='green',width=100)
button1=Button(frm3,text='登录',command=get_data)
button1.pack()
frm3.pack()
window.mainloop()
我觉得就剩你没查了 prince_cool 发表于 2021-8-27 22:23
什么问题,可以上图看看是什么bug,欢迎互相交流
代码问题出现在这个地方
for i in datalist:
text.insert(END,'{}:{}'.format(i,datalist))
text.see(END)
text.update()
不是很懂Python,只能大概看出问题应该是这里,可能说的不对
众人心欢i 发表于 2021-8-27 17:09
我觉得就剩你没查了
昨天就写好程序了,今天想着要不要发个贴,然后就发了,哈哈哈哈 显示结果有问题 牛啊大佬 这两天我去试一下代码 这个可以有,方便 不错呀 支持原创 互相学习~~ Onlooker. 发表于 2021-8-27 18:26
显示结果有问题
什么问题,可以上图看看是什么bug,欢迎互相交流 建议代码用代码块包起来,方便阅读
页:
[1]
2