首先实现爬虫的功能
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()
最后得到的结果是这样的