利用爬虫实现英语4 6级成绩查询 以及创建图形化界面

首先实现爬虫的功能

import requests
import random
import re
from bs4 import BeautifulSoup
from PIL import Image,ImageTk
from io import BytesIO


class TEC(object):
    def __init__(self,zh,name):
        super(TEC, self).__init__()

        self.url = ['http://cache.neea.edu.cn/Imgs.do']
        self.header = {
            'Accept': '*/*',
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'zh-CN,zh;q=0.9',
            'Connection': 'keep-alive',
            'Host': 'cache.neea.edu.cn',
            'Referer': 'http://cet.neea.edu.cn/cet/',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36',
        }
        self.session = requests.session()
        self.zh = zh
        self.name = name
        self.login_url = "http://cache.neea.edu.cn/cet/query"
    def yzm(self):
        parm = {
            'c': 'CET',
            'ik': self.zh,
            't': random.random()
        }
        a = self.session.get(url=self.url[0], headers=self.header, params=parm)
        img_url = re.search(r".*?\(\"(.*?)\"\)", str(a.text)).group(1)
        self.img_url = 'http://cet.neea.edu.cn/imgs/' + img_url + '.png'
        cookie = a.headers["Set-Cookie"]
        self.header['Cookie'] = cookie.split(';')[0]
        YZM = self.session.get(url=self.img_url)
        Yzm_img = BytesIO(YZM.content)
        self.img = Image.open(Yzm_img).resize((100,50))
        rander = ImageTk.PhotoImage(self.img)
        return rander
    def getresult(self,yzm):
        self.formdata = {
            'data': 'CET4_192_DANGCI' + ',' + self.zh + ',' + self.name,
            'v': yzm
        }
        result = self.session.get(url=self.login_url, headers=self.header, params=self.formdata)
        return result.text


然后再实现GUI图形界面

import tkinter as tk
from TEC import TEC
import tkinter.messagebox
from PIL import ImageTk,Image

class TK(object):
    def __init__(self):
        super(TK, self).__init__()
        self.top = tk.Tk()
        self.top.geometry("500x200")
        self.user_name = tk.StringVar()
        self.user_name.set('马泽伟')
        self.user_zh = tk.StringVar()
        self.user_yzm = tk.StringVar()
        self.user_zh.set('132480192108105')
        tk.Label(self.top,text="用户账号:").place(x=100,y=50)
        tk.Label(self.top,text="用户密码:").place(x=100,y=100)
        self.entry_user_name = tk.Entry(self.top,textvariable=self.user_name)
        self.entry_user_name.place(x=160,y=100)
        tk.Label(self.top, text="验证码:").place(x=100, y=150)
        self.entry_user_zh = tk.Entry(self.top,textvariable=self.user_zh)

        self.entry_user_yzm = tk.Entry(self.top, textvariable=self.user_yzm).place(x=160, y=150)
        self.entry_user_yzm = tk.Entry(self.top, textvariable=self.user_yzm).place(x=160, y=150)
        self.entry_user_zh.place(x=160,y=50)
        tk.Button(self.top, text="获取验证码", command=self.yzm).place(x=400, y=150)
        tk.Button(self.top, text="提交", height=5, width=15, activeforeground='red', background='#9ACD32',
                  command=self.result).place(x=350, y=30)
        self.top.mainloop()
    def yzm(self):
        self.a = TEC(self.user_zh.get(),self.user_name.get())
        global IMAGE
        IMAGE = self.a.yzm()
        tk.Label(self.top, image=IMAGE).place(x=10, y=10)
        print(self.yzm)
    def result(self):
        self.yzm = self.user_yzm.get()
        self.content = self.a.getresult(self.user_yzm.get())
        tk.messagebox.showinfo(title='成绩', message=self.content)
d = TK()

最后得到的结果是这样的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值