吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3020|回复: 15
收起左侧

[Python 转载] 紧跟时事,自己制作四六级查分小工具

[复制链接]
prince_cool 发表于 2021-8-27 17:05
本帖最后由 prince_cool 于 2021-8-28 17:24 编辑

最近在假期重拾了python,学习了爬虫和图形化界面库tkinter,想着最近也要四六级查分了,就看看能不能自己写一个这样的小工具吧。
首先、打开查分网页
1.png
按F12,打开开发者工具,填入信息获取响应
2.png 3.png
(发现并没有什么cookie,token验证,发现是普通地提交参数获得请求)
(km:查询的科目,e:不用修改,xm:姓名,no:身份证号或准考证号,v不填)
查看一下响应
5.png
(因为是错误信息,当然返回的响应是错误的提示)
接下来输入我自己的正确信息(已做处理)
6.gif
获得相应的正确内容
7.gif 8.png
(裸考没想到过了,哈哈哈哈哈哈)
数据都有了,我们开始编写程序吧!
用到了request,tkinter和json库
下面是做好后的界面,毕竟第一次做这种,排版什么的都不太好,多多见谅
9.png
因为分析写代码什么的都比较简单,我就直接把代码放在下面了,可以直接打包或者修改代码,做的更好看,有不懂的地方可以留言交流,感谢
[Python] 纯文本查看 复制代码
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[km],
            '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[i]))
                text.see(END)
                text.update()
            if int(data['score'])>=425:
                tkinter.messagebox.showinfo(message='恭喜你,通过考试啦,么么哒!!!👍')
            if int(data['score'])<425:
                tkinter.messagebox.showinfo(message='很遗憾,你没通过考试哦,继续加油!!!&#129470;')
        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()





发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

众人心欢i 发表于 2021-8-27 17:09
我觉得就剩你没查了
Onlooker. 发表于 2021-8-28 14:01
prince_cool 发表于 2021-8-27 22:23
什么问题,可以上图看看是什么bug,欢迎互相交流

代码问题出现在这个地方
[Python] 纯文本查看 复制代码
            for i in datalist:
                text.insert(END,'{}:{}'.format(i,datalist))
                text.see(END)
                text.update()


不是很懂Python,只能大概看出问题应该是这里,可能说的不对




 楼主| prince_cool 发表于 2021-8-27 17:25
众人心欢i 发表于 2021-8-27 17:09
我觉得就剩你没查了

昨天就写好程序了,今天想着要不要发个贴,然后就发了,哈哈哈哈
Onlooker. 发表于 2021-8-27 18:26
显示结果有问题
hhdhxb 发表于 2021-8-27 20:52
牛啊大佬
hhdhxb 发表于 2021-8-27 20:54
这两天我去试一下代码
yaoliu 发表于 2021-8-27 21:12
这个可以有,方便
璐璐诺 发表于 2021-8-27 21:24
不错呀 支持原创 互相学习~~
 楼主| prince_cool 发表于 2021-8-27 22:23

什么问题,可以上图看看是什么bug,欢迎互相交流
正己 发表于 2021-8-27 22:36
建议代码用代码块包起来,方便阅读
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 14:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表